[JDBC] 01 JDBC 시작

프로그래밍/DB 2007. 11. 27. 13:53 Posted by galad

DB : Oracle 9i

JAVA : Sdk 1.5.0_06


1. 오라클 설치 후 환경 설정


시스템의 환경변수 설정 화면에서


---\Oracle\jre\1.3.1\bin;

---\Oracle\jre\1.1.8\bin;


을 삭제한다.

오라클 설치 시 인스톨 되는 jre 버젼과 우리가 자바를 설치했을 때 인스톨 한 jre 버젼이

맞지 않아서 생기는 문제를 없앤다.


2. JDBC로 DB에 접속하는 4가지 타입

① Type 1 : JDBC-ODBC Bridge Plus ODBC Driver
  ■ Bridge 방식은 현존하는 DB의 ODBC driver를 그대로 이용하여 JDBC access를 지원하는 module
  ■ ODBC는 각 database client에 install되어 있는 Native code를 사용
  ■ Failure Point 발생 가능성


② Type 2 : Native API
  ■ Native database client library를 이용하여 작성
  ■ Driver는 JDBC 호출을 번역하여 database client library의 API로 변경
  ■ Library는 DBMS provider에 의해 제공
  ■ 플랫폼에 독립적이지 못하므로 플랫폼에 맞는 곳에서만 사용가능


③ Type 3 : JDBC-Net
  ■ Client와 Server사이의 중간에서 통신을 수행
  ■ 중간 Server의 Protocol에 특정적으로 동작 해야 함. JDBC 메소드를 호출해서 DBMS에 독립적인 네트웍 프로토콜로 전환해 주는 드라이버
  ■ No native code model
  ■ DB를 바꾸더라도 Middleware만 교체해주면 된다.
  ■ 주로 규모가 큰 회사에서 사용 - Middleware가 필요하므로 비용이 많이 들어서.


④ Type 4 : Native Protocol
  ■ JDBC 호출을 DBMS에서 사용하는 Network protocol로 곧바로 번역 함
  ■ Client에서 Database로의 direct 호출이 가능
  ■ Best Performance
  ■ 사용하는 DBMS를 변경할 때는 유연하지 못함
  ■ 가장 많이 사용하는 방식.


3. Oracle에서 JDBC를 사용하기 위해서 해주어야 할 일

① 환경변수 - 클래스패스에 D:\Java\jdk1.5.0_06\lib\classes12.zip; 를 추가해주어야 한다.

 classes12.jar 는 JSP에서 사용하고, zip은 자바 응용 프로그램에서 사용하므로 주의!!!


/*******************************************************************************************
* 파일  : Test.java
* 용도  : JDBC 시작
* 작성자 : 성홍제
* 작성일 : 2006. 07. 21
* Version : 1.0
*******************************************************************************************/


// ① 패키지 임포트
import java.sql.*;


public class Test
{
  // Fields
  // Constructor
  // Methods
  // Main

  public static void main(String[] args)
  {
    Connection con = null; // DB가 연결될 때 그 정보를 받는다
    Statement stmt = null; // SQL 명령어를 사용하기 위한 변수
    ResultSet rs = null;  // SQL 명령을 실행한 후, 그 결과를 받기 위한 변수


    System.out.println("지금부터 시작합니다");


    // ② 드라이버 로딩 - 드라이버 로딩에 실패할 경우에 대비하여 try-catch
    try
    {
      Class.forName("oracle.jdbc.driver.OracleDriver");  // 글자 틀리지 말 것
      System.out.println("오라클 드라이버 로딩 성공");
    }
    catch(Exception e)
    {
      System.out.println(e);
    }

 

    // thin: Type4 방식을 사용하여 접속
    // 서버 IP, 1521: 포트 번호 - default: 1521
    // ora92: DB 이름
    String url = "jdbc:oracle:thin:@61.109.232.128:1521:ora92";  // 글자 틀리지 말 것


    try
    {
      // ③ 오라클 데이터베이스 연결
      con = DriverManager.getConnection(url, "scott", "tiger"); // 임시로 scott으로 접속

      System.out.println("오라클 데이터베이스 연결 성공");
    }
    catch(Exception e)
    {
      System.out.println("오라클 데이터베이스 연결 실패");
    }


    try
    {
      // ④ Statement 객체 생성
      stmt = con.createStatement();


      // ⑤ SQL 구문 실행

      // DB에서 실행할 뿐, 결과는 ResultSet으로 받는다.
      rs = stmt.executeQuery("select * from emp");


      // ⑥ ResultSet 결과 사용하기
      while(rs.next()) // 다음 데이터가 없을 때 까지 무한루프
      {

        // rs의 결과중 1번째 것: empno. empno는 number이므로 getInt로 가져온다.
        //String empno = rs.getInt(1);  
       int empno = rs.getInt("empno"); // rs의 결과중 컬럼 이름이 empno인 것.


       // 마찬가지로 결과중 2번째 것: ename. varchar2이므로 getString으로 가져온다.
       //String ename = rs.getString(2);  

       // 숫자로 몇 번째 것: 보다는 이렇게 컬럼명을 사용하는게 좋다.
       String ename = rs.getString("ename");


       System.out.print("empno: " + empno + "\t");
       System.out.println("ename: " + ename);
     }
   }
   catch(Exception e)
   {
      e.printStackTrace();
   }
   finally  // 예외가 발생하든 안하든 반드시 자원을 반납해주어야 서버가 다운되지 않는다.
   {
      try
      {
        // ⑦ 자원 반납
        stmt.close();
        con.close();
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }


      System.out.println("객체 반납");
    }
  }
}

'프로그래밍 > DB' 카테고리의 다른 글

[JDBC] 06 PL/SQL  (0) 2007.11.27
[JDBC] 05 ResultSet  (0) 2007.11.27
[JDBC] 04 JDBC - Connection Pool...  (0) 2007.11.27
[JDBC] 03 3일째  (0) 2007.11.27
[JDBC] 02 2일째  (0) 2007.11.27