JSP
[JSP] 6. JDBC
myeongju
2024. 7. 27. 21:21
반응형
JDBC란 ?
- Java/JSP 프로그램 내에서 데이터 베이스와 관련된 작업을 처리할 수 있도록 도와주는 자바 표준 인터페이스
- 관계형 데이터베이스 시스템을 접근하여 SQL 문을 실행하기 위한 자바 API 또는 자바 라이브러리
- JDBC API를 사용하면 DBMS의 종류에 상관없이 데이터베이스 작업을 처리할 수 있음
JDBC 드라이버 로딩하기
- JDBC 드라이버 로딩 단계에서는 드라이버 인터페이스를 구현하는 작업
Class.forName()
메소드를 이용하여 JDBC 드라이버를 로딩- JDBC 드라이버가 로딩되면 자동으로 객체가 생성되고 DriverManager 클래스에 등록됨
- JDBC 드라이버 로딩은 프로그램 수행 시 한 번만 필요
Class.forName(String className);
- MySQL 드라이버 로딩 예
<%
try {
Class.forName("com.mysql.jdbc.Driver");
} carch (SQLException ex) {
// 예외 발생 처리
}
%>
Connection 객체 생성하기
- JDBC 드라이버에서 데이터베이스와 연결된 커넥션을 가져오기 위해 DriverManager 클래스의 getConnection()메소드를 사용함
- DriverManager 클래스로 Connection 객체를 생성할 때 JDBC 드라이버를 검색하고, 검색된 드라이버를 이용하여 Connection 객체를 생성한 후 이를 반환함
static Connection getConnection(String url)
static Connection getConnection(String url, String user, String password)
static Connection getConnection(String url, Properties info)
url
: 데이터베이스 경로- 표현 형식 : jdbc:dbms 이름:주소:포트 번호[데이터베이스 식별자]
user
,password
: 데이터베이스 사용자 이름, 비밀번호info
: 사용자 및 비밀번호 등의 추가 정보를 포함한 Properties 객체
Statement 객체로 데이터 접근하기
Statement 객체
- 정적인 쿼리에 사용함
- 하나의 쿼리를 사용하고 나면 더는 사용할 수 없음
- 하나의 쿼리를 끝내면
close()
를 사용하여 객체를 즉시 해제해야 함
Statement createStatement() throws SQLException
Statement 객체의 메소드 종류
메소드 | 반환 유형 | 설명 |
---|---|---|
executeQuery(String sql) | ResultSet | SELECT문을 실행할 때 사용한다 (ResultSet 객체 반환) |
executeUpdate(String sql) | int | 삽입,수정, 삭제와 관련된 SQL문 실행에 사용한다 |
close() | void | Statement 객체를 반환할 때 사용한다. |
쿼리문 실행 결과 값 가져오기
ResultSet 객체
메소드 | 반환 유형 | 설명 |
---|---|---|
getXxx(int ColumnIndex) | XXX | SELECT 문을 실행할 때 사용한다(ResultSet 객체 반환). |
getXxx(String ColumnName) | XXX | 삽입, 수정, 삭제와 관련된 SQL 문 실행에 사용한다. |
absolute(int row) | boolean | 설정한 row 행으로 커서를 이동한다. |
beforeFirst() | void | 첫 번째 행의 이전으로 커서를 이동한다. |
afterLast() | void | 마지막 행의 다음으로 커서를 이동한다. |
first() | void | 첫 번째 행으로 커서를 이동한다. |
last() | void | 마지막 행으로 커서를 이동한다. |
next() | boolean | 다음 행으로 커서를 이동한다. |
previous() | boolean | 현재 행의 이전 행으로 커서를 이동한다. |
close() | void | ResultSet 객체를 반환할 때 이동한다. |
작업 흐름
JDBC 작업 흐름
JDBC Driver → DriverManager → DriverManager.getConnection() → Connection conn → conn.createStatement() → Statement stmt → stmt.excuteQuery(select) → ResultSet → stmt.executeUpdate(dml) → int
- JDBC Driver 로드: JDBC 드라이버를 로드하여 데이터베이스와 통신 가능.
- DriverManager: 드라이버 관리 및 데이터베이스 연결 설정.
- DriverManager.getConnection(): 데이터베이스에 연결 설정 및
Connection
객체 반환. - Connection 객체: 데이터베이스 연결을 나타내며 SQL 명령문 실행에 사용.
- conn.createStatement():
Statement
객체 생성. - Statement 객체: SQL 문 실행.
- stmt.executeQuery(select):
SELECT
쿼리 실행 및ResultSet
객체 반환. - ResultSet 객체: 쿼리 결과를 포함하여 데이터베이스 데이터 읽기.
- stmt.executeUpdate(dml): DML 명령어 실행 및 영향받은 행의 수 반환.
데이터베이스 작업 흐름
conn.prepareStatement(sq) > pStmt.setXxx(?) → PreparedStatement pStmt → pStmt.executeQuery() → ResultSet → stmt.executeUpdate(dml) → int
conn.prepareStatement(sql)
: SQL 쿼리를 미리 컴파일한PreparedStatement
객체를 생성.pStmt.setXxx(?)
: 쿼리의 매개변수에 값을 설정.pStmt.executeQuery()
: SQL 쿼리를 실행하고 결과를ResultSet
객체로 반환.ResultSet
: 쿼리 결과 데이터를 포함하는 객체.stmt.executeUpdate(dml)
: DML 명령어를 실행하고 영향받은 행의 수를 반환.
PreparedStatement 객체로 데이터 접근하기
exexuteQuery()
메소드로 데이터 조회
: 동적인 SELECT 쿼리문을 통해 데이터를 검색하는 데 사용
int executeQuery() throws SQLException
PreparedStatement 객체의 메소드 종류
메소드 |
반환 유형 | 설명 |
---|---|---|
executeQuery() | ResultSet | SELECT 문을 실행할 때 사용한다(ResultSet 객체 반환). |
executeUpdate() | int | 삽입, 수정, 삭제와 관련된 SQL 문 실행에 사용한다. |
close() | void | PreparedStatement 객체를 반환할 때 사용한다. |
반응형