11. JDBC 기초

20
11. JDBC 기기

description

11. JDBC 기초. JDBC. JDBC 작성된 응용 프로그램에서 오라클 데이터와 연동하여 필요한 데이터를 데이터베이스로부터 얻어 오거나 저장하는데 사용되는 표준 데이터베이스 연동 라이브러리 JDK http://java.sun.com/javase/downloads/index.jsp JAVA 개발환경 eclipse. JDBC 란. 자바 언어를 사용한 응용 프로그램들이 DBMS 에 연결하고 데이터를 검색 , 저장 할 수 있도록 지원하는 패키지 - PowerPoint PPT Presentation

Transcript of 11. JDBC 기초

Page 1: 11. JDBC  기초

11. JDBC 기초

Page 2: 11. JDBC  기초

JDBC◦ 작성된 응용 프로그램에서 오라클 데이터와 연동하여 필요한 데이터를 데이터베이스로부터 얻어 오거나 저장하는데 사용되는 표준 데이터베이스 연동 라이브러리◦ JDK

http://java.sun.com/javase/downloads/index.jsp ◦ JAVA 개발환경

eclipse

JDBC

Page 3: 11. JDBC  기초

자바 언어를 사용한 응용 프로그램들이 DBMS 에 연결하고 데이터를 검색 , 저장 할 수 있도록 지원하는 패키지 SQL 문을 이용하여 사용자가 원하는 정보를 검색할 수 있도록 지원 JDBC 의 장점

◦ 개방형 패키지로 자바에서에 표준으로 제공◦ SQL 문을 지원함으로써 배우기 쉽고 사용하기 편함

JDBC 란

Page 4: 11. JDBC  기초

응용 프로그램◦ 응용 프로그램은 JDBC 메소드를 호출해서 SQL 문을 보내고

DBMS 로부터 원하는 데이터를 저장 , 검색 한다 . 드라이버 매니저

◦ 응용 프로그램에 요청하는 드라이버를 로드해 주는 역할을 한다 . 이 드라이버 매니저는 JDK 안에 표준으로 제공하고 한다 . 드라이버

◦ 드라이버는 데이터베이스에 SQL 문을 전송하고 , 검색 결과를 응용 프로그램에 전달하는 역할을 하며 , 각 DBMS 마다 자체 드라이버를 제공한다 . DBMS

◦ 데이터가 저장되어 있는 저장소의 역할을 수행한다 .

JDBC 의 구성요소

Page 5: 11. JDBC  기초

JDBC 의 구조

Page 6: 11. JDBC  기초

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) 사용

자바로 자성된 네트워크 드라이버

오라클 드라이버

Page 7: 11. JDBC  기초

JDBC API◦ JDBC API java.sql 패키지를 import 해야 함 ◦ Java.sql 패키지에는 JDBC API 2.0 표준 기능들이 포함◦ 이외의 추가 기능들은 javax.sql 패키지에 포함

JDBC 의 이용 방법 순서◦ 사용 드라이버를 드라이버 매니저에 등록◦ 드라이버 매니저를 통한 데이터베이스 연결◦ SQL 문을 DBMS 로 전송◦ DBMS 가 SQL 문의 결과를 전송◦ DBMS 와의 연결 종료

JDBC 이용 프로그램의 구성

Page 8: 11. JDBC  기초

드라이버 매니저◦ DriverManager ◦ java.sql 을 import 하면 자동으로 생성되는 클래스 객체

드라이버 생성◦ new 메소드를 이용하여 oracle.java.jdbc.driver.OracleDriver() 인 객체 생성자를 호출

드라이버 등록◦ DriverManager.registerDriver(new oracle.jdbc.driver.Ora-

cleDriver()); 주의사항

◦ DriverManager 는 java.sql 패키지에서 제공◦ 그러나 , oracle 드라이버는 오라클사에서 제공함 . ◦ 따라서 해당 패키지 (ojdbc14.jar) 를 link 시켜 놓아야 함 .

드라이버 등록

Page 9: 11. JDBC  기초

JDBCtest 라는 프로젝트를 생성◦ 그림에서 보듯이 JRE system library 가 link 되어 있음 .

오라클 드라이버 링크

Page 10: 11. JDBC  기초

프로젝트 property 선택 , library 선택오라클 드라이버 링크

Page 11: 11. JDBC  기초

외부 Jar 파일 버튼 선택

Page 12: 11. JDBC  기초

ojdbc14 를 찾아가서 선택

최종 link 화면

Page 13: 11. JDBC  기초

드라이버 매니저를 통하여 오라클에 접속 Connection 객체

◦ DriverManager 의 getConnection() 메소드를 호출하여 생성◦ 입력 변수 : 데이타베이스의 위치인 URL, ID, Passward

Connection con = DriverManager.getConnection(“jdbc:oracle:thin:@//lo-calhost:1521/orcl”, “scott”, “tiger”)

◦ URI ( 응용과 오라클이 동일 컴퓨터일 경우 jdbc:oracle:thin:@//localhost:1521/orcl jdbc:oracle:thin 은 드라이버 @//localhost 는 오라클이 동작되고 있는 현 컴퓨터 다른 컴퓨터에서 동작할 경우 @//localhost 대신 실제 컴퓨터의 IP 주소를

@xxx.xxx.xxx.xxx 로 입력하면 됨 :1521 은 네트워크에 포트번호 : 오라클 미리 예약 /orcl 은 오라클 데이터베이스 명

데이타베이스 연결

Page 14: 11. JDBC  기초

Statement 객체◦ SQL 을 전송하기 위한 그릇◦ Connection 객체의 createStatement() 메소드를 이용하여 생성

Statement stat = con.createStatement();◦ executeQuery() 메소드

SELECT 구문을 실행 시킬 때 사용되는 메소드 실행 결과를 ResultSet 객체로 반환

◦ executeUpdate() 메소드 데이터 수정 시에 사용되는 메소드로 반환 결과로 정수값을 반환

SQL 전송과 결과 받기

Page 15: 11. JDBC  기초

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”);}

ExecuteQuery() 메소드

Page 16: 11. JDBC  기초

getByte(), getShort(), getInt(), getLong(), getFloat(), getDouble(), getBigDecimal(), getBoolean(), getString(), getBytes(), getData(), getTime(), getTimestamp(), getAsciiStream(), getUnicodeStream(), getBinaryStream(),

getObject()

주의사항 : 오라클에서 사용하는 데이터 타입과 자바의 데이터 타입이 불일치 하는 경우가 있음 올바른 getXXX() 메소드를 선택해야함 . getString() 의 경우 오라클의 기본 데이터 타입에 대하여 오류가 발생되지 않음 .

◦ 정수 값이든 실수값이던 문자열이든 모두 String 타입으로 변환해 줌 .

getXXX() 메소드

Page 17: 11. JDBC  기초
Page 18: 11. JDBC  기초

데이터 조작어를 수행시킬 때 사용되는 메소드 정수 값을 반환

◦ INSERT, UPDATE, DELETE 삽입 , 변경 , 삭제된 레코드 수를 반환

◦ CREATE, DROP, ALTER 항상 0 을 반환

executeUpdate()

Page 19: 11. JDBC  기초

실행결과

Page 20: 11. JDBC  기초

ResultSet() 을 결과가 더 이상 필요 없으면 ResultSet::close() 메소드를 사용하여 그결과를 종료

Statement 객체를 더 이상 사용하지 않을 경우에도 Statement::close() 메소드를 이용하여 종료

DBMS 와 응용 프로그램 사이의 연결을 종료할 경우에도 Connection::close() 를 이용하여 종료

응용프로그램이 종료되게 되면 자동으로 DB 와 응용사이의 모든 연결들이 종료되게 되지만 , DBMS 의 오작동 등을 방지하지 위하여 항상 close() 메소드를 이용하여 연결들을 종료하는 것이 필요

DBMS 의 연결 종료