programming/JSP

[JSP]JDBC 연결 (Connection, Statement,resultSet),

코딩찔찔이 2021. 11. 29. 11:04

📌JDBC란?

 

출처 : [JPA ORM JDBC 란]https://kooku.netlify.app/

-DB에 연결 및 작업을 하기 위한 자바 표준 인터페이스.

-JAVA는 DBMS의 종류에 상관없이 하나의 JDBC API를 이용해서 데이터베이스 작업을 처리할 수 있는 일종의 라이브러리이다.

-JDBC는 DB에 접근하여 CRUD 구현을 효율적으로 할 수 있게 하는 메소드를 제공하여, 더욱 효율적인 프로그래밍을 가능하게 한다.

 

📌JDBC 연결 순서

1) JDBC 드라이버 로드 > 

Class.forName("oracle.jdbc.driver.OracleDriver");

Oracle driver 클래스를 메모리에 올린다.

 

2) DB 연결 > 

Connection connection = DriverManager.getConnection(url,uid,upw);

DriverManager 객체는 JDBC driver를 통해 Connection 객체를 만드는 역할을 수행한다.

또한 class.forName 메소드를 통해서 생성되며, Connection 객체는 getConnection 메소드로 생성된다.

 

 

3) Statement 객체 생성 >

Statement statement = connection.createStatement();

Statement는 SQL문을 전송하고 처리된 결과를 다시 자바프로그램쪽으로 전달시켜주는 역할이다.

객체를 생성하기 위해서는 Connection 객체의 createStatement 메소드를 이용한다.

 

4) SQL 문 전송 

resultSet = statement.executeQuery(query);
// SQL 문 실행 후 여러 개의 결과값이 발생할 경우 사용(select)

resultSet = statement.executeUpdate();
// SQL문 실행 후 테이블의 내용이 변경, 수정, 삭제될 경우 사용(insert, delete, update)

Statement 객체의 executeQuery메소드로 SQL문을 전송. 반환값은 ResultSet 변수로 받는다.

 

5)질의 결과를 처리

while(resultSet.next()){
	String id = resultSet.getString("id");
	String pw = resultSet.getString("pw");
    String nickName = resultSet.getString("nickName");
    String email = resultSet.getString("email");

질의 결과를 처리하는 과정에서 next 메서드를 사용하면 하나의 행(레코드)이 존재하는 지를 판별하여, 존재한다면 True 

존재하지 않다면 false의 값을 받는다. true를 반환한다면 다음 레코드로 이동하여 판별한다. 

resultSet 객체는 열(컬럼)의 값을 추출하는 getter 메소드를 지닌다.

String 타입으로 컬럼의 이름을 임의적으로 지정할 수 있다.

 

6)연결 해제

}final{
try{

if(resultSet != null) resultSet.close();
if(statement != null) statement.close();
if(connection != null) connection.close();

}catch(Exception e){}
	
}

DB관련 처리 작업이 완료된 다음, 사용하고 있던 객체들은 메모리에서 반드시 해제해줘야 한다.

예외처리를 이용한 후, 마지막 final에서 해제를 수행한다.

해제하는 순서는 최근에 사용했던 객체부터 거꾸로 올라가며 해제시켜준다.