JDBC(Java Database Connectivity)

= 자바를 이용한 데이터베이스 접속과 SQL 문자으이 실행, 그리고 실행결과 얻어진 데이터의 handling을 제공하는 방법과 절차에 대한 규약

= 자바 프로그램 내에서 SQL 문을 실행하기 위한 자바API

● JDBC API는 표준으로 정해졌기 때문에 DBMS에 무관하게 프로그램을 작성할 수 있다. 그러나 JBDC API는 표준적인 API만 제공할 뿐, 실질적으로 작업을 수행하는 부분은 JDBC 드라이버이다.

실습용 테이블 customer 생성 SQL

● 구성 :

= 자바로 작성되어진 클래스와 인터페이스

= Package : java.sql

● import java.sql.*; 필요.

 

● 목적 : 

= Tool / Database 개발자들을 위한 표준 API를 제공하고 pure 자바 API를 이용하여 데이터베이스 Application을 작성할 수 있게 함.

 

● 특징 : 

= java.sql 패키지 안에는 클래스(Class)보다 인터페이스(Interface)가 많이 존재한다.

미완성 상태의 인터페이스는 내부에 추상 메소드만 가지고 있다. 이를 상속받은(Implements) 클래스가 인터페이스 안에 추상 메소드를 선택적으로 오버라이딩을 통해서 구체화하여 실행시킬 수 있게 된다.

  1. Interface A {
      public abstract void go(); // public abstract 는 인터페이스의 기본 설정이다.
    }
  2.  
  3. Class B inplements A {
       public void go(){ ~~~~~}
    }

 

● 기능

= 데이터베이스와 연결(네트워크 연결? 원격접속)

= SQL문 전송

= 결과 처리

 

 

JDBC를 이용하기 위해서는, DBMS 제조사에서 제공하는 JDBC용 드라이버를 설치해야 한다.

JDBC용 드라이버 다운로드 경로 : http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

 

SQL 과 관련된 내용은 다음 페이지를 참조하세요. ^^

http://sunfuture.springnote.com/pages/3180626

 

● JDBC 작성 순서

# 실습예제 : JdbcOracle.java JdbcOracle.java (코드보기)

[1]. JDBC Driver 등록 - JDBC Driver Manager : 어떤 DBMS를 사용하게 될 것인지를 알려주는 작업

D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 파일을 복사해서

= 오라클이 설치된 폴더에서 JDBC에 쓰일 수 있는 JDBC 드라이버들이 jar(자바 압축방식)

= 관련내용 : 위키백과 -  http://en.wikipedia.org/wiki/JAR_(file_format)

= Sun 홈페이지 설명 : http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html

OJDBC14_install.JPG

Drive:\Program Files\Java\jdk1.6.0_13\jre\lib\ext  에 붙여넣기 하면 된다.

- ext 폴더는 자바 실행기에서 기본으로 검색하는 곳이다.

OJDBC14.JPG

[2]. JDBC 드라이버를 로드한다.

  1. Class.forName("oracle.jdbc.driver.OracleDrver");

 

[3]. DBMS에 커넥션(Connection : 네트워크 연결)을 연다.

※ Dirver Manager의 getConnection()을 이용 - Connection 객체 얻어오기.

  1. Connection conn = DriverManager.getConnection( JDBC_URL, db_user, db_passwd);

 

[4]. SQL을 전송한다.

4.1. Connection 객체의 createStatement()을 이용해서 Statement 객체 얻어내기

  1. Statement stat = conn.createStatement();

4.2. ResultSet 객체의 executeQuery()나 executeUpdate()를 이용해서 SQL문을 DB에 전송(날려~, 보내)

ResultSet rs = stat.executeQuery( SQL -

● 사용 SQL이 Select인 경우 : executeQuery()(타입 : ResultSet)  을 실행하면 ResultSet 객체의 getXXXX() 로 받아주어야 한다. 

● 사용 SQL이 Select 아닌 경우 : executeUpdate()(타입 : integer) 는 ResultSet 객체를 생성하지 않는다.

 

[5]. 결과를 처리한다.

참조 API : http://java.sun.com/javase/6/docs/api/index.html

ResultSet(인터페이스, 소스 : ResultSet.java ) 객체의 getXXXX() 를 이용해서 SQL 문장의 실행결과 얻어내기. (※ XXXX는 Select 하는 컬럼의 속성값에 따라 변경된다).

  1. STRING query = "select name, phone from friends";
    ResultSet rs  = stmt.executeQuery(query);
    while ( rs.next() ){
        String name = rs.getString(1);
        String phone = rs.getString(2);
        System.out.println(name + " | " | phone);
    }

컬럼의 순서를 모를 때에는 getXXXX(" "); 를 하면 된다. 접근속도에 영향을 받을 때에는 Index를 사용한다.

rs.absolute(Index);  index  숫자의 행으로 이동한다.

rs.first(); ResultSet 객체의 처음 행으로 이동한다.

rs.last(); ResultSet 객체의 마지막 행으로 이동한다.

※ getXXXX() 메소드 사용시, DB에 저장된 컬럼의 속성에 맞추어서 getInt(), getDouble(), getString() 등으로 맞춰주어야 한다.

 

[6]. 커넥션을 닫는다.

  1. rs.close();
  2. stmt.close();
  3. con.close();

 

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts