JDBC
- Java Database Connectivity
- 자바API중 하나로, 자바에서 데이터베이스를 접속 할 수 있게 해줌
- java.sql, javax.sql 패키지에 관련 인터페이스와 클래스 존재
- PreparedStatement 인터페이스: SQL을 DB에 전송하고 결과 반환
- ResultSet 인터페이스: SQL 실행결과를 저장하고 저장값을 한 행 단위로 불러옴
- ResultSetMetaData 인터페이스: 데이터에 대한 정보(테이블 이름, 행 갯수, 타입 등) 반환
jdbc 등록하기
- jdbc를 등록할 프로젝트 오른쪽 클릭 - buid path - cinfigure buildpath
- Libraries - add External Jars
- 파일선택. 보통 ojdbc(자바버전).jar파일
- apply후 끝냄
자바-오라클 연동
- AUTO COMMIT을 지원하므로 따로 COMMIT 하지않음
ResultSet executeQuery
- SELECT 쿼리를 DB로 전송
- 조회 결과를 ResultSet으로 반환
int executeUpdate
- INSERT, UPDATE, DELETE 쿼리를 DB로 전송
- 전송한 쿼리 수를 int 값으로 반환
예제
예외처리
try {
수행문
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException ex) {
ex.getStackTrace();
}
드라이버로드
Class.forName("oracle.jdbc.OracleDriver");
데이터베이스 연결
String url = "jdbc:oracle:thin:@ip:1521:xe";
String id = "지정한ID";
String pw = "지정한PW";
Connection connection = DriverManager.getConnection(url, id, pw);
sql문 작성&전송
// executeQuery
String sql = "select 컬럼 from 테이블 ..."
// executeUpdate
String sql = "insert into/update/delete from 테이블 (컬럼1, 2, ...) values (?, ?, ...)";
// PreparedStatement 객체 획득
PreparedStatement pstmt = conneciton.prepareStatement(sql);
// executeUpdate의 경우, 데이터 값 전송
pstmt.setString(?순번, 데이터); // 첫번째 ?면 1
pstmt.setInt(?순번, 데이터); // 두번째 ?면 2
- values는 컬럼수와 반드시 일치해야함
- values에 미리 값을 지정해 줄 수도 있고, 이후 ?에 값을 대응시켜줄 수도 있음
결과 받기
// executeQuery
ResultSet rs = pstmt.executeQuery();
// boolean 값을 반환하는 next()메서드로 전체값 출력 가능
while(rs.next()){
String name = rs.getString("컬럼명");
}
// executeUpdate
int row = pstmt.executeUpdate();
System.out.println(row); // 전송한 쿼리수 반환
연결 해제
rs.close(); // executeQuery만
pstmt.close();
connection.close();
- 선언한 역순으로 close를 이용해 리소스를 반납