2008. 7. 24. 20:29

JDBC Connection 생성

1. 몇가지 데이터베이스에 접속하기 위한 드라이버 로딩 방법

Driver Name

Example

JDBC-ODBC

Bridge JDK

기본드라이버

Class.forName(“sun.jdbc.odbc.jdbcOdbc Driver”);

Oracle

Class.forName(“oracle.jdbc.driver.Oracle Driver”);

mSQL

Class.forName(“imaginary.sql.iMsql Driver”);

MySQL

Class.forName(“org.git.mm.mysql. Driver”);

SyBase

Class.forName(“com.sybase.jdbc2.jdbc.Syb Driver”);

Informix

Class.forName(“com.informix.jdbc.Ifx Driver”);



2. 해당 데이터 베이스 접속

try {
  // URL, ID, Password
  Connection con = DriverManager.getConnection("jdbc:orcle:thin:@70.12.220.33:1521:ora9", "scott", "tiger");
} catch(SQLException e){
  System.out.println("Connection fail!!!");
}

3. JDBC UL 기술 정보

드라이버 Name

URL

JDBC-ODBC

Bridge

Jdbc:odbc:[;=]

Oracle

OCI URL Type

Jdbc:oracle:oci:<userid>/<password>@<dbname>

Jdbc:oracle:oci:<userid>/<password>@<tns-name-value-pair>

Thin URLType

Jdbc.oracle:thin:<userid>/<password>@<host>:<port>:<dbname>

Jdbc:orcle:thin:<userid>/<password>@<tns-name-value-pair>

mSQL

Jdbc:msql://<hostname>:<port>/<dbname>

MySQL

Jdbc:mysql://<hostname>:<port>/<dbname>

SyBase

Jdbc:Sybase:Tds:<ip>:<port>

Informix

Jdbc:Informix-sqli://<ip>:<port>/<dbname>:INFORMIXSERVER

Postgres

Jdbc:postgresql://<ip>:<port>/<dbname>



4. Connection 인터페이스의 메소드들

# SQL문을 생성하여 전송하거나 PL/SQL 블록을 활용하기 위한 메소드
   : createStatement(), prepareStatement(), prepareCall(),

# 기본 연결 정보를 바탕으로 transaction 처리에 관한 메소드
  : getAutoCommit(), setAutoCommit(), commit(), rollback()
  -> 기본 설정은 setAutoCommit(true) 상태이므로 auto-commit 상태임

# 기본적인 Error나 Warning을 처리하기 위한 메소드
  : claerWarnings(), getWarnings()

# Connection 객체 사용 후 닫기를 위한 메소드
  : close(), isClosed()
  -> 연결을 해제하면서 연결에 사용된 모든 변수나 메모리 자원을 반납하는 과정으로 이 메서드 호출 이전에
      JDBC Program에서 사용했던 ResultSet객체나 Statement 객체의 close() 메서드를 먼저 호출하여
      객체를 가비지 콜렉션한 다음 Connection 객체의 close() 메서드를 호출하여야 함.

5. 예제

Oracle 9i 데이터베이스에 연결

 

01         import java.sql.*;

02        

03         class ConnectionTest{

04                       public static void main(String args[]){

05                      Connection con = null;

06                      try{

07                                   Class.forName("oracle.jdbc.driver.OracleDriver");

08                                   con = DriverManager.getConnection

09                                   ("jdbc:oracle:thin:@127.0.0.1:1521:ora9",

10                                   "jdbc00","jdbc00");

11                                   System.out.println("데이터베이스 연결 성공했습니다.");

12                              con.close();

13                      }catch(ClassNotFoundException e){

14                                   System.out.println("JDBC Drvier load fail!!!");

15                      }catch(SQLException e){

16                                   System.out.println("Connection fail!!!");

17                                   e.printStackTrace();

18                      }

19                      finally{

20                                   try{

21                                                  if(con != null) con.close();

22                                                 }catch(SQLException e){}

23                      }

24          }

25         }          



6. Log4J를 이용한 출력 결과

 

import java.sql.*;

import org.apache.log4j.*;

 

class ConnectionTest_Log{

           /*

           Logger 클래스의 인스턴스를 생성합니다.

           SimpleLog.class 객체가 이미 생성되어 있다면

           생성되어 있는 객체가 반환된다.

           객체가 생성되어 있지 않다면 새로운 객체를 생성한다.

           */

           static Logger logger = Logger.getLogger(ConnectionTest_Log.class);

           public static void main(String args[]) {

                     /*

                     화면 콘솔로 로그 출력을 하기 위한 간단한 설정입니다.

                     %p : 로그 이벤트 레벨을 출력하는 패턴을 설정합니다.

                     [%l%] : 로그 이벤트가 발생한 자바 소스 파일 이름,

                     로그 이벤트가 발생한 소스 라인, 메서드 이름을 출력하는 패턴을 설정.

                     -%m%n : 로그 이벤트 출력 메서드에서 지정한 문자열을

                     출력하는 패턴을 설정합니다.

                     */

                     String pattern = "%p [%l] - %m%n";

                     PatternLayout layout = new PatternLayout(pattern);

                     ConsoleAppender console = new ConsoleAppender(layout);

                     BasicConfigurator.configure(console);

                     Connection con = null;

                     try {

                                Class.forName("oracle.jdbc.driver.OracleDriver");         

                                con = DriverManager.getConnection(

                                          "jdbc:oracle:thin:@127.0.0.1:1521:ora9",

                                          "jdbc00", "jdbc00");

                                /*

                                로그 이벤트 레벨 INFO 로그 레벨로

지정된 문자열 내용을 출력합니다.

                                */

                                logger.info("데이터베이스 연결 성공했습니다.");

                                con.close();

                     } catch(ClassNotFoundException e){

                                /*

                                로그 이벤트 레벨 ERROR 로그 레벨로

                                지정된 문자열 내용을 출력합니다.

                                */

                                logger.error("JDBC Driver load fail!!!");

                     }catch(SQLException e) {

                                /*

                                로그 이벤트 레벨 ERROR 로그 레벨로

                                지정된 문자열 내용을 출력합니다.

                                */

                                logger.error("Connection fail!!!");

                     }

                     finally{

                                try{

                                          if(con != null) con.close();

                                } ctch(SQLException e) { }

                     }

           }

}



오타가 있을수 있음.