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() 메소
드를 이용하여 연결들을 종료하는 것이 필요