Day31 :) JDBC

Nux·2021년 10월 20일
0

자바웹개발

목록 보기
32/105
post-thumbnail

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를 이용해 리소스를 반납

0개의 댓글