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

  1. conn.prepareStatement(sql): SQL 쿼리를 미리 컴파일한 PreparedStatement 객체를 생성.
  2. pStmt.setXxx(?): 쿼리의 매개변수에 값을 설정.
  3. pStmt.executeQuery(): SQL 쿼리를 실행하고 결과를 ResultSet 객체로 반환.
  4. ResultSet: 쿼리 결과 데이터를 포함하는 객체.
  5. stmt.executeUpdate(dml): DML 명령어를 실행하고 영향받은 행의 수를 반환.

 

PreparedStatement 객체로 데이터 접근하기

exexuteQuery() 메소드로 데이터 조회

: 동적인 SELECT 쿼리문을 통해 데이터를 검색하는 데 사용

int executeQuery() throws SQLException

 

PreparedStatement 객체의 메소드 종류

메소드

반환 유형 설명
executeQuery() ResultSet SELECT 문을 실행할 때 사용한다(ResultSet 객체 반환).
executeUpdate() int 삽입, 수정, 삭제와 관련된 SQL 문 실행에 사용한다.
close() void PreparedStatement 객체를 반환할 때 사용한다.

 

 

반응형