2_JDBC_(관련 객체들)
@Connection
- DB의 연결 정보를 담은 객체
- JDBC드라이버와 DB사이를 연결해주는 일종의 통로
- 직접 객체 생성은 불가
-> DriverManager.getConnection() 이용하여 객체 생성
@Statement
- Connection 객체를 이용해서 DB에 SQL문을 전달하고
전달하는 SQL문의 실행 결과를 반환받는 역할을 하는 객체
- Connection.createStatement() 이용해서 객체 생성
@ResultSet
- SELECT문을 사용할 SQL 성공 시 반환되는 값을 저장할 객체
- SELECT의 결과로 생성된 테이블을 담고 있으며 커서(CURSOR)라는 테이블을 한 행씩
접근하는 DB객체를 이용하여 특정 행에 대한 참조를 조작함
@PreparedStatement
- statement와 같은 SQL문을 전달하고 실행하여 결과를 반환받는 객체
- 차이점은 실행 시간동안 인수값을 위한 공간을 확보
- SQL문에서 인수가 필요한 각 부분에 위치홀더(?)를 작성하여 SQL문을 정의할수 있음
- ?(위치홀더) : SQL 문장에 나타나는 토큰
SQL구문이 실행되기 전에만 실제 값으로 대체하면됨
ex)
String query = "SELECT * FROM EMP WHERE ENPNO =?";
pstmt = conn.prepareStatement(query);
- query를 PrepareStatement 객체 위에 올려두고 홀더(?)를 채울준비를함
- 홀더에 값 세팅방법
- pstmt.set[Type](?의 순번, 적용할 값)
pstmt.setInt(1, empNo);
- SQL문의 1번 홀더 자리에 empNo 값을 대입
- SQL문 완성 후 DB에서 실행 후 결과를 반환 받음
rset = pstmt.executeQuery();
- 위에서 이미 세팅해놨기때문에 매개변수에 안넣어도됨
------------------------------------------------------------------------
JDBC 관련 객체 선언
Connection conn = null;
ResultSet rset = null;
PreparedStatement pstmt = null;
//(Statement stmt = null;)
try { // ClassNotFoundException, SQLException 오류가능성있음)
Class.forName("oracle.jdbc.driver.OracleDriver");
//ojdbc6.jar속에 있는 OracleDriver.class를 메모리에 로딩
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",
// 타입 : 자기자신주소 : 포트 : 오라클버전,
"SCOTT", "TIGER");
// 계정, 비번
//-----------------------------------------------------
// Statement로 사용시
// String query = "SQL문";
// stmt = conn.createStatement(); //statement 생성
// rset = stmt.executeQuery(query); // DB조회 결과 저장
//----------------------------------------------------
String query = "SQL문";
pstmt = conn.prepareStatement(qeury);
// query를 PreparedStatement 객체 위에 올려두고 홀더(?)를 채울 준비를함
// 홀더값 세팅 방법
// pstmt.set[Type](?의 순번, 적용할 값)
pstmt.setInt(1, empNo);
// SQL문 완성 후 DB에서 실행 후 결과를 반환받음
rset = pstmt.executeQuery();
// 위에서 이미 세팅해놨기때문에 매개변수에 안넣어도됨 바로 실행
//while or if 절로 rset.next()를 사용하여 가져온 값을
//커서(CORSOR)를 이용하여 한 행 씩 접근하여
//값 넣기
//타입 변수명 = rset.get[Type]("컬럼명");
//조회 결과를 매개변수로 하여 EMP 객체 생성후 컨트롤러에 전달
} catch(Exception e) {
e.printStackTrace(); // 오류잡고
} finally {
try { // DB연결자원반환
rset.close();
//stmt.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return 반환형;
}