1 / 40

JDBC

JDBC. JDBC 란 ?. JDBC 서버 언어를 이용한 응용 프로그램들이 DBMCS 에 연결하고 데이터를 검색할 수 있는 서버 패키지 JDBC 는 함수 호출용 SQL 인터페이스 JDBC 의 장점 개방성 배우고 사용하기가 쉽다. JDBC 구성. 4 요소 응용 프로그램 , 드라이버 매니저 , 드라이버 , DBMS 응용 프로그램 응용 프로그램은 JDBC 메소드를 호출해서 SQL 문은 DBMS 에 보내고 원하는 데이터를 검색 드라이버 매니저 응용 프로그램이 요청하는 드라이버를 로드

lei
Download Presentation

JDBC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JDBC

  2. JDBC 란? • JDBC • 서버 언어를 이용한 응용 프로그램들이 DBMCS에 연결하고 데이터를 검색할 수 있는 서버 패키지 • JDBC 는 함수 호출용 SQL 인터페이스 • JDBC의 장점 • 개방성 • 배우고 사용하기가 쉽다. 1장. 데이타베이스 개론

  3. JDBC 구성 • 4 요소 • 응용 프로그램, 드라이버 매니저, 드라이버, DBMS • 응용 프로그램 • 응용 프로그램은 JDBC메소드를 호출해서 SQL 문은 DBMS에 보내고 원하는 데이터를 검색 • 드라이버 매니저 • 응용 프로그램이 요청하는 드라이버를 로드 • 드라이버 • 드라이버는 데이터베이스에 SQL 문을 전송하기도 하고, 검색 결과를 응용 프로그램에 전달하기도 한다. • DBMS • 데이터가 저장되어 있는 장소 1장. 데이타베이스 개론

  4. ORACLE DBMS • 오라클은 국내에서 가장 널리 사용되는 DBMS로서 업체 및 관공서, 학교 등에서 많이 사용 • 모든 플랫폼 버전 제공 • 가격이 비쌈 • 오라클에서는 • JDBC Thin 과 JDBC OCI 두 가지 타입의 JDBC 를 제공 • JDBC Thin은 자바로 작성된 네트워크 드라이버이고 JDBC OCI는 네이티브 메소드로 작성된 드라이버 • JDBC OCI는 네이티브 메소드로 작성되었기 때문에 애플릿시에는 사용할 수 없음 1장. 데이타베이스 개론

  5. JDBC 구현 1장. 데이타베이스 개론

  6. JDBC 드라이버 • JDBC 드라이버 매니저는 • 서버 응용 프로그램이 사용하는 데이타베이스에 맞는 드라이버를 찾아서 JDBC를 초기화 함 • JDBC를 이용하여 데이타베이스에 SQL문을 전송 • 그 결과는 응용 프로그램에 전달하는 역할을 하는 JDBC 드라이버는 4가지 유형 • 다음 사이트를 방문하면 JDBC 드라이버를 제공하는 업체의 목록을 확인할 수 있음 • http://java.sun.com/products/jdbc/industry.html • 드라이버 찾기 • http://servlet.java.sun.com/products/jdbc/drivers 1장. 데이타베이스 개론

  7. JDBC API • JDBC API • 서버 응용 프로그램에서 데이터베이스를 연결하고 • 데이터를 제어하는 일련의 인터페이스와 클래스 • 관련 인터페이스와 클래스들은 JDK의 “java.sql”패키지에 정의 • JDBC 2.0 표준 이외의 몇가지 기능을 구현한 클래스들이 “javax.sql”패키지에 포함되어 있음 1장. 데이타베이스 개론

  8. JDBC를 이용한 프로그램의 기본 작업 • 먼저 사용하는 드라이버를 드라이버 매니저에 등록 • Class.forName() 메소드를 사용 • Driver 객체를 생성함으로써 registerDriver() 메소드를 자동으로 호출 • 드라이버 메니저를 이용하여 데이터베이스를 연결 • 드라이버와 관련된 작업을 하는 클래스는 DriverManager이고 • DriverManager를 통해서 만들어진 Connect클래스의 객체를 이용하여 Statement 객체를 만듦. • SQL 문을 서버에 전송 • Statement 객체를 이용하여 SQL 문을 서버에 전송하고 SQL 문을 실행 • 서버는 SQL 결과를 클라이언트에 보내면 이제 그 결과를 가지고 원하는 작업을 하게 됨. • 결과를 ResultSet이라는 객체를 통해서 받게 됨 • DB와 연결된 객체 종료 1장. 데이타베이스 개론

  9. JDBC 절차 • 드라이버 로드 • Driver drv = new sun.jdbc.odbc.JdbcOdbcDriver(); • DiverManager.registerDriver(drv); • 데이터베이스 연결 • Connection con = DriverManager.getConnection(URL); • 질의 • 문장 생성 • Statement stmt = con.createStatement(); • 질의 • Stmt.execute(“create table weater(city varchar(80), lo integer, hi integer, day date);”); • ResultSet rs = stmt.executeQuery(“select * from weather”); • 문장 닫기 • stmt.close(); • 연결 닫기 • con.close(); 1장. 데이타베이스 개론

  10. 드라이버 리스트에서 드라이버 등록 • 드라이버 매니저 • 메소드는 DriverManager.registerDriver() 호출 • 다른 방법으로는 Class.forName() 메소드를 이용하거나 클래스의 객체를 정의하여 드라이버를 로드할 때 자동으로 호출할 수 있음 • 3가지 방법 • Class.forName() • Driver 객체를 생성함으로써 registerDriver() 메소드를 자동으로 호출 • registerDriver()메소드를 이용하여 드라이버를 등록함 1장. 데이타베이스 개론

  11. 방법 1 • Class.forName()메소드릴 사용 • registerDriver() 메소드를 자동으로 호출함. • Class.forName(드라이버 이름); • 예 • Driver drv = Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); • //JDBC-ODBC 드라이버 • Driver drv = Class.forName(“org.gjt.mm.mysql.Driver”); • //MySql 드라이버 • Driver drv = Class.forName(“oracle.jdbc.driver.OracleDriver”); • //Oracle Thin드라이버 • Driver drv = Class.forName(“com.inet.tds.TdsDriver”); • //SQL Server7의 Spinta 드라이버 • Driver drv = Class.forName(“con.internetcds.jdbc.tds.Driver”); • //SQL Server7의 FreeTds드라이버 1장. 데이타베이스 개론

  12. 방법 2 • Driver 객체를 생성함으로써 registerDriver()메소드를 자동으로 호출함 • new 드라이버이름() 또는 • Driver 객체 이름 = (Driver) new 드라이버이름(); • 예1 ) • Driver drv = (Driver) new postgress95.PGDriver(); • New MsqlDriver(); 1장. 데이타베이스 개론

  13. 방법 3 • registerDriver() 메소드를 이용하여 드라이버를 등록함 • DriverManager.registerDriver(new 드라이버이름()); • 예1 • DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //for Oracle10G • 예2 • Driver drv = new sun.jdbc.odbc.JdbcOdbcDriver(); • DriverManager.registerDriver(drv); 1장. 데이타베이스 개론

  14. Connection • 인터페이스 Connection • DriverManger 클래스의 getConnection()메소드를 실햄함으로서 정의 되며 데이타베이스와 연결된 세션(session) 역할을 함 • 이 세션을 이용하여 데이타베이스에 SQL을 전송하고 그 결과를 얻음 • DriverManager 클래스의 getConnection() 메소드를 이용하여 Connection 객체를 정의하는 방법 • JDBC URL만을 지정함 • Connection 객체를 DriverManager.getConnection(JDBC_URL); • JDBC URL과 연결할 데이터베이스의 사용자 ID와 암호를 지정 • Connection 객체 이름 = • DriverManager.getConnection(JDBC_URL, 사용자ID, 암호); 1장. 데이타베이스 개론

  15. Connection • 오라클 import java.sql.*; • DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); • //jdbc:oracle:thin은 드라이버, @ime114-15은 컴퓨터 주소, 1521은 포트 번호 • String dbURL = “jdbc:oracle:thin:@//ime114-15:1521/orcl”; • Connection con = DriverManager.getConnection(dbURL, “me”, “1234”); 1장. 데이타베이스 개론

  16. JDBC URL형태의 문법 • jdbc:<subprotocol>:<subname> • jdbc란 JDBC 프로토콜을 의미 • <subprotocol> • subprotocal은 사용될 JDBC 드라이버 이름이나 데이타베이스를 연결할 때 사용되는 메커니즘 이름 • <subname> • subname 부분은 사용될 데이터베이스 이름 • odbc 경우 지정된 DSN(데이터원본 이름) • subname은 subprotocol에 따라 변경될 수 있으며 드라이버를 작성하는 곳의 문법에 따라 subsubname을 가질 수 있다. • jdbc url 의 subname 형태 • //hostname:port/subsubname • Mysql 경우 • //localhost:3306/bbs • 데이터베이스 이름 bbs 1장. 데이타베이스 개론

  17. ResultSet • getXXX() 메소드는 argument로 열의 이름이나 열의 순서를 사용할 수 있다. • 열의 순서는 1부터 시작 • String s = rs.getString(“b”); • String s = rs.getString(2); 1장. 데이타베이스 개론

  18. SQL 문 전송하기 • Statement 생성 • 생성된 Statement 객체가 데이터베이스에게 SQL 문을 전송하는 방법 : 3 가지 • 방법1) executeQuery() • ResultSet 객체를 반환하는 SQL 문 • 방법2) executeUpdate() • DB 수정 SQL • 방법3) execute() • SQL문이 여러 개의 ResultSet을 반환하거나 여러 개의 갱신된 로부(row) 개수를 반환하는 경우. 1장. 데이타베이스 개론

  19. 오라클 예제 1장. 데이타베이스 개론

  20. 실습 • JDBC 드라이버를 이용하여 STUDENT 테이블의 모든 정보를 가져오는 SQL문을 수행하는 자바 프로그램을 작성하시오 • SELECT * FROM STUDENT 1장. 데이타베이스 개론

  21. executeUpdate()의 반환 값 • 정수 • 레코드 개수 • INSERT, UPDATE, DELETE의 경우 • 0 • CREATE, DROP, 그리고 ALTER • 따라서, executeUpdate()가 0을 반환 • SQL문에 따라서 의미가 다름. 1장. 데이타베이스 개론

  22. executeUpdate()의 반환 값 1장. 데이타베이스 개론

  23. execute() • public boolean execute(String sql) • 복수의 결과를 돌려줄 가능성이 있는 SQL 문장 • 첫번째 결과가 ResultSet 객체의 경우는 true, 갱신 카운트 또느 결과가 없는 경우 false • Resultset과 갱신된 레코드 개스를 함게 반환하는 SQL문인 경우에도 해당 • 일반적으로 저장 포로시져를 실행하거나 전송하는 SQL문을 코딩시에 예측할 수 없는 경우 사용. 1장. 데이타베이스 개론

  24. 결과 검색 • ResultSet 클래스는 SQL 문장의 조건을 만족하는 데이터의 행들을 가지고 있으면서, 일련의 getXXX() 메소드를 이용해서 현재 행에 포함된 데이터를 접근할 수 있는 기능을 제공 1장. 데이타베이스 개론

  25. ResultSet • executeQuery()의 결과 • SELECT 문의 executeQuery() 메서드를 실행한 다음 반환되는 레코드 셋을 저장함 • 레코드 셋은 데이터베이스 테이블 형태라고 생각할 수 있음 • 레코드 셋은 집합이므로 공집합일 수 있음 • next() 메소드 • ResultSet으로 부터 레코드를 읽어오기 위해서 사용 • next()메소드는 읽어올 레코드가 있으면 true • 없으면 false를 반환 1장. 데이타베이스 개론

  26. ResultSet • ResultSet을 이용해서 결과 집합에서 현재 행의 각 열의 값을 얻어오는 예제 • Connect con = DriverManager.getConnection(); • Statement stmt = con.createStatement(); • ResultSet rs = stmt.executeQuery(“select a,b,c from Table1”); • while(rs.next()){ • int i = rs.getint(“a”); • String s = rs.getString(“b”); • float f = rs.getFloat(“c”); • System.out.println(“ROW = “ + i+ “”+s+””+f); • } • 각 열의 데이터 타입에 따라서 getXXX() 메소드를 호출 • getXXX()메소드에서 XXX부분은 해당 열의 데이터타입 1장. 데이타베이스 개론

  27. 필드 값 가져오기 • 커서의 이동 • next() 메소드는 ResultSet의 커서(현재 레코드를 가리키는 포인터)를 이동 시킬 뿐이고, 커서가 가리키고 있는 현재 레코드로부터 (Column) 값을 읽어 오려면 필드(Column)값의 유형에 따라서 getInt(), getString(), getDate(), getObject() 등을 사용함 • ResultSet의 포인터 • 초기 ResultSet의 포인터는 첫 레코드 이전을 가리키고 있기 때문에 ResultSet으로 부터 처음 레코드를 가져올 때 부터 next()를 사용하여 첫 레코드 포인터를 이동시켜야 함. • 레코드 읽기 • getXXX() 1장. 데이타베이스 개론

  28. ResultSet 1장. 데이타베이스 개론

  29. ResultSet 1장. 데이타베이스 개론

  30. JDBC 객체소멸 • 객체 소멸 • 데이타베이스를 다루기 위해 생성한 JDBC 객체 (Connection, Statement, PreparedStatement, ResultSet)는 사용이 끝난 다음 소멸 시킴 • 객체를 소멸 시킨다는 의미는 객체가 사용한 메모리를 시스템에 반환함으로써 더 이상 그 객체를 참조할 수 없도록 하는 것 • Close 메소드 • JDBC객체를 소멸하려면 각 객체에 close() 메소드를 실행시킴 • Statement객체.close(); • Connection객체.close(); 1장. 데이타베이스 개론

  31. JDBC의 주요 클래스 1장. 데이타베이스 개론

  32. PreparedStatement 클래스 • Statement로 부터 상속 받은 객체( • PreparedStatement는 이미 컴파일 된 SQL문을 포함함으로써 SQL을 미리 준비하도록 하는 것 • 특정 형태의 SQL문들을 전송하기 위한 클래스 • 특징 • SQL 문의 조건에 사용될 값이나 필드가 상황에 따라서 결정되어질때, SQL 문에 매개 변수를 포함하고, 이후에 그 매개변수에 값을 지정함으로써 SQL문을 완성 • PreparedStatement 객체는 사전에 컴파일 되기 때문에 Statement 객체 보다 실행 속도가 빠르며 여러 번 수행되어질 SQL 문들의 효율을 높이기 위해서도 사용됨. 1장. 데이타베이스 개론

  33. PreparedStatement • Statement • 자체에 SQL문을 포함하고 있지 않음 • Parameter로 SQL 문을 받음 • PreparedStatement • 이미 컴파일된 SQL 문을 포함하고 있음. 따라서, • executeXXX() 메소드에서 인자로 SQL문을 지정하지 않음 1장. 데이타베이스 개론

  34. PreparedStatement • 예 1) • Connection con = DriverManager.getConnection(“jdbc.odbc.mysql”); • PreparedStatement ps = con.preparedStatement( “SELECT * FROM T1 WHERE zip = ?”); 1장. 데이타베이스 개론

  35. SQL 문의 매개 변수 설정 • 매개변수 설정 • SQL 문에서 사용한 매개 변수 값을 설정하려면, setXXX() 메소드를 이용. • Ex) 매게 변수에 지정할 데이터가 String이면, setString() 이용 • setXXX() • 2개의 인자 • 설정될 매개변수의 순서 번호 • 매개 변수 설정 값 • Ex) • ps.setString(1, “15043); 1장. 데이타베이스 개론

  36. PreparedStatement • Connect con = DriverManager.getConnect(..); • PreparedStatement ps = con.preparedStatement(“UPATE T SET si =? WHERE zip = ? “); • ps.setString( 1, “seoul”); • for(int I =0; I < 10 ; i++){ • Ps.setInt(2, i); • Int rowCount = ps.executeUpdate(); • } 1장. 데이타베이스 개론

  37. callable statement 란? • callable statement를 이용한 자바 응용 프로그램 작성 1장. 데이타베이스 개론

  38. DB에 Procedure 만들기 SQL* Plus에서 create or replace procedure increase(x in number, y in number) is PHEIGHT number; begin select height into PHEIGHT from student where idnum = x; PHEIGHT := PHEIGHT+y; update student set height = PHEIGHT where idnum = x; end; / 1장. 데이타베이스 개론

  39. 실습 • PreparedStatement를 이용하여, 학번(STUDNO)이 10101과 20101학생의 이름을 출력하시오. 1장. 데이타베이스 개론

  40. SQL EX 1장. 데이타베이스 개론

More Related