Transcript PPT - DKE
JDBC
◦ 작성된 응용 프로그램에서 오라클 데이터와 연동하여 필
요한 데이터를 데이터베이스로부터 얻어 오거나 저장하
는데 사용되는 표준 데이터베이스 연동 라이브러리
◦ JDK
http://java.sun.com/javase/downloads/index.jsp
◦ JAVA 개발환경
eclipse
자바 언어를 사용한 응용 프로그램들이 DBMS에
연결하고 데이터를 검색, 저장 할 수 있도록 지원
하는 패키지
SQL문을 이용하여 사용자가 원하는 정보를 검색
할 수 있도록 지원
JDBC의 장점
◦ 개방형 패키지로 자바에서에 표준으로 제공
◦ SQL문을 지원함으로써 배우기 쉽고 사용하기 편함
응용 프로그램
◦ 응용 프로그램은 JDBC 메소드를 호출해서 SQL문을 보내고 DB
MS로부터 원하는 데이터를 저장, 검색 한다.
드라이버 매니저
◦ 응용 프로그램에 요청하는 드라이버를 로드해 주는 역할을 한
다. 이 드라이버 매니저는 JDK 안에 표준으로 제공하고 한다.
드라이버
◦ 드라이버는 데이터베이스에 SQL문을 전송하고, 검색 결과를
응용 프로그램에 전달하는 역할을 하며, 각 DBMS마다 자체 드
라이버를 제공한다.
DBMS
◦ 데이터가 저장되어 있는 저장소의 역할을 수행한다.
JDBC 드라이버 제공 회사 또는 DBMS의 목록
◦ http://java.sun.com/products/jdbc/reference/indus
trysupport/index.html
오라클용드라이버
◦ 하드디스크 Orcle\product\10.2\db_1\jdbc\lib 폴더
◦ JDBC Thin 드라이버 (파일명 ojdbc14.jar) 사용
자바로 자성된 네트워크 드라이버
JDBC API
◦ JDBC API java.sql 패키지를 import 해야 함
◦ Java.sql 패키지에는 JDBC API 2.0 표준 기능들이 포함
◦ 이외의 추가 기능들은 javax.sql 패키지에 포함
JDBC의 이용 방법 순서
◦
◦
◦
◦
◦
사용 드라이버를 드라이버 매니저에 등록
드라이버 매니저를 통한 데이터베이스 연결
SQL문을 DBMS로 전송
DBMS가 SQL문의 결과를 전송
DBMS와의 연결 종료
드라이버 매니저
드라이버 생성
◦ DriverManager
◦ java.sql을 import하면 자동으로 생성되는 클래스 객체
◦ new 메소드를 이용하여 oracle.java.jdbc.driver.OracleDrive
r()인 객체 생성자를 호출
드라이버 등록
주의사항
◦ DriverManager.registerDriver(new oracle.jdbc.driver.Orac
leDriver());
◦ DriverManager는 java.sql 패키지에서 제공
◦ 그러나, oracle 드라이버는 오라클사에서 제공함.
◦ 따라서 해당 패키지(ojdbc14.jar)를 link 시켜 놓아야 함.
JDBCtest라는 프로젝트를 생성
◦ 그림에서 보듯이 JRE system library가 link 되어 있음.
프로젝트 property 선택,
library 선택
외부 Jar 파일 버튼 선택
ojdbc14를 찾아가서 선택
최종 link 화면
드라이버 매니저를 통하여 오라클에 접속
Connection 객체
◦ DriverManager의 getConnection()메소드를 호출하여 생성
◦ 입력 변수:데이타베이스의 위치인URL, ID, Passward
Connection con = DriverManager.getConnection(“jdbc:oracle:thi
n:@//localhost:1521/orcl”, “scott”, “tiger”)
◦ URI (응용과 오라클이 동일 컴퓨터일 경우
jdbc:oracle:thin:@//localhost:1521/orcl
jdbc:oracle:thin은 드라이버
@//localhost는 오라클이 동작되고 있는 현 컴퓨터
다른 컴퓨터에서 동작할 경우 @//localhost대신 실제 컴퓨터의 IP 주소를 @xx
x.xxx.xxx.xxx로 입력하면 됨
:1521은 네트워크에 포트번호: 오라클 미리 예약
/orcl은 오라클 데이터베이스 명
Statement 객체
◦ SQL을 전송하기 위한 그릇
◦ Connection 객체의 createStatement() 메소드를 이용하
여 생성
Statement stat = con.createStatement();
◦ executeQuery() 메소드
SELECT 구문을 실행 시킬 때 사용되는 메소드
실행 결과를 ResultSet 객체로 반환
◦ executeUpdate() 메소드
데이터 수정 시에 사용되는 메소드로 반환 결과로 정수값을
반환
ResultSet rs = stat.executeQuery(“select snum, sname from student’);
◦ SELECT문 결과는 튜플들의 집합 ResultSet
◦ ResultSet::next()
Curser: 내부적으로 현재 ResultSet의 한 레코드를 가리키고 있음
결과 튜플들을 순차적으로 읽어 올 수 있도록 함
현재 상태에서 읽어올 레코드가 있으면 true를 반환하고 없으면 false를 반환 while() 이용
while(rs.next()){ … };
◦ ResultSet::getXXX()
하나의 레코드는 여러 개의 컬럼값들로 구성되어 있음
각 컬럼값을 접근 지원
XXX는 자바에서 사용되는 데이타타입
매개변수: 컬럼명
또는 정수값(해당 컬럼의 순서, 1부터 시작)
while( rs.next()){
int studnum = rs.getInt(1); // 또는 rs.getInt(“snum”);
String studname = rs.getString(2);// 또는 rs.getString(“sname”);
}
getByte(), getShort(), getInt(), getLong(), getFloat(),
getDouble(), getBigDecimal(), getBoolean(),
getString(), getBytes(), getData(),
getTime(), getTimestamp(),
getAsciiStream(), getUnicodeStream(), getBinaryStrea
m(), getObject()
주의사항: 오라클에서 사용하는 데이터 타입과 자바의 데이
터 타입이 불일치 하는 경우가 있음
올바른 getXXX()메소드를 선택해야함.
getString()의 경우 오라클의 기본 데이터 타입에 대하여 오
류가 발생되지 않음.
◦ 정수 값이든 실수값이던 문자열이든 모두 String 타입으로 변환해
줌.
데이터 조작어를 수행시킬 때 사용되는 메소드
정수 값을 반환
◦ INSERT, UPDATE, DELETE
삽입, 변경, 삭제된 레코드 수를 반환
◦ CREATE, DROP, ALTER
항상 0을 반환
실행결과
ResultSet()을 결과가 더 이상 필요 없으면 Result
Set::close()메소드를 사용하여 그결과를 종료
Statement 객체를 더 이상 사용하지 않을 경우에
도 Statement::close()메소드를 이용하여 종료
DBMS와 응용 프로그램 사이의 연결을 종료할 경
우에도 Connection::close()를 이용하여 종료
응용프로그램이 종료되게 되면 자동으로 DB와 응
용사이의 모든 연결들이 종료되게 되지만, DBMS
의 오작동 등을 방지하지 위하여 항상 close() 메소
드를 이용하여 연결들을 종료하는 것이 필요