210 likes | 385 Vues
11. JDBC 기초. JDBC. JDBC 작성된 응용 프로그램에서 오라클 데이터와 연동하여 필요한 데이터를 데이터베이스로부터 얻어 오거나 저장하는데 사용되는 표준 데이터베이스 연동 라이브러리 JDK http://java.sun.com/javase/downloads/index.jsp JAVA 개발환경 eclipse. JDBC 란. 자바 언어를 사용한 응용 프로그램들이 DBMS 에 연결하고 데이터를 검색 , 저장 할 수 있도록 지원하는 패키지
E N D
JDBC • JDBC • 작성된 응용 프로그램에서 오라클 데이터와 연동하여 필요한 데이터를 데이터베이스로부터 얻어 오거나 저장하는데 사용되는 표준 데이터베이스 연동 라이브러리 • JDK • http://java.sun.com/javase/downloads/index.jsp • JAVA 개발환경 • eclipse
JDBC란 • 자바 언어를 사용한 응용 프로그램들이 DBMS에 연결하고 데이터를 검색, 저장 할 수 있도록 지원하는 패키지 • SQL문을 이용하여 사용자가 원하는 정보를 검색할 수 있도록 지원 • JDBC의 장점 • 개방형 패키지로 자바에서에 표준으로 제공 • SQL문을 지원함으로써 배우기 쉽고 사용하기 편함
JDBC의 구성요소 • 응용 프로그램 • 응용 프로그램은 JDBC 메소드를 호출해서 SQL문을 보내고 DBMS로부터 원하는 데이터를 저장, 검색 한다. • 드라이버 매니저 • 응용 프로그램에 요청하는 드라이버를 로드해 주는 역할을 한다. 이 드라이버 매니저는 JDK 안에 표준으로 제공하고 한다. • 드라이버 • 드라이버는 데이터베이스에 SQL문을 전송하고, 검색 결과를 응용 프로그램에 전달하는 역할을 하며, 각 DBMS마다 자체 드라이버를 제공한다. • DBMS • 데이터가 저장되어 있는 저장소의 역할을 수행한다.
오라클 드라이버 • JDBC 드라이버 제공 회사 또는 DBMS의 목록 • http://java.sun.com/products/jdbc/reference/industrysupport/index.html • 오라클용드라이버 • 하드디스크 Orcle\product\10.2\db_1\jdbc\lib 폴더 • JDBC Thin 드라이버 (파일명 ojdbc14.jar) 사용 • 자바로 자성된 네트워크 드라이버
JDBC이용 프로그램의 구성 • 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.OracleDriver()인 객체 생성자를 호출 • 드라이버 등록 • DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); • 주의사항 • DriverManager는 java.sql 패키지에서 제공 • 그러나, oracle 드라이버는 오라클사에서 제공함. • 따라서 해당 패키지(ojdbc14.jar)를 link 시켜 놓아야 함.
오라클 드라이버 링크 • JDBCtest라는 프로젝트를 생성 • 그림에서 보듯이 JRE system library가 link 되어 있음.
오라클 드라이버 링크 프로젝트 property 선택, library 선택
ojdbc14를 찾아가서 선택 최종 link 화면
데이타베이스 연결 • 드라이버 매니저를 통하여 오라클에접속 • Connection 객체 • DriverManager의getConnection()메소드를 호출하여 생성 • 입력 변수:데이타베이스의 위치인URL,ID, Passward Connection con = DriverManager.getConnection(“jdbc:oracle:thin:@//localhost:1521/orcl”, “scott”, “tiger”) • URI (응용과 오라클이 동일 컴퓨터일 경우 • jdbc:oracle:thin:@//localhost:1521/orcl • jdbc:oracle:thin은 드라이버 • @//localhost는 오라클이 동작되고 있는 현 컴퓨터 • 다른 컴퓨터에서 동작할 경우 @//localhost대신 실제 컴퓨터의 IP 주소를 @xxx.xxx.xxx.xxx로 입력하면 됨 • :1521은 네트워크에 포트번호:오라클 미리 예약 • /orcl은 오라클 데이터베이스 명
SQL 전송과 결과 받기 • Statement 객체 • SQL을 전송하기 위한 그릇 • Connection 객체의createStatement() 메소드를 이용하여 생성 Statement stat = con.createStatement(); • executeQuery() 메소드 • SELECT 구문을 실행 시킬 때 사용되는 메소드 • 실행 결과를ResultSet객체로 반환 • executeUpdate() 메소드 • 데이터 수정 시에 사용되는 메소드로 반환 결과로 정수값을반환
ExecuteQuery()메소드 • ResultSetrs = 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()){ intstudnum = rs.getInt(1); // 또는rs.getInt(“snum”); String studname = rs.getString(2);// 또는rs.getString(“sname”); }
getXXX() 메소드 • getByte(), getShort(), getInt(), getLong(), getFloat(), • getDouble(), getBigDecimal(), getBoolean(), • getString(), getBytes(), getData(), • getTime(), getTimestamp(), • getAsciiStream(), getUnicodeStream(), getBinaryStream(), getObject() • 주의사항: 오라클에서 사용하는 데이터 타입과 자바의 데이터 타입이 불일치 하는 경우가 있음 • 올바른 getXXX()메소드를선택해야함. • getString()의 경우 오라클의 기본 데이터 타입에 대하여 오류가 발생되지 않음. • 정수 값이든 실수값이던 문자열이든 모두 String 타입으로 변환해 줌.
executeUpdate() • 데이터 조작어를 수행시킬 때 사용되는 메소드 • 정수 값을 반환 • INSERT, UPDATE, DELETE • 삽입, 변경, 삭제된 레코드 수를 반환 • CREATE, DROP, ALTER • 항상0을 반환
DBMS의 연결 종료 • ResultSet()을 결과가 더 이상 필요 없으면ResultSet::close()메소드를 사용하여 그결과를 종료 • Statement 객체를 더 이상 사용하지 않을 경우에도 Statement::close()메소드를 이용하여 종료 • DBMS와 응용 프로그램 사이의 연결을 종료할 경우에도 Connection::close()를 이용하여 종료 • 응용프로그램이 종료되게 되면 자동으로 DB와 응용사이의 모든 연결들이 종료되게 되지만, DBMS의 오작동 등을 방지하지 위하여 항상 close() 메소드를 이용하여 연결들을 종료하는 것이 필요