JDBC Connection 생성
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) { } } } } |
오타가 있을수 있음.