Know/DATABASE

DB2 JDBC TYPE

Marine™ 2006. 7. 13. 16:13
반응형
[데이타베이스사랑점넷 에서 펌!]

미리 찾아봤더라면 좋았을껄...
삽질3시간의 댓가를 치르다..-_-;;




아래와 같이 odbc로 연결할때는 접속도 잘되고 데이터도 잘 받아오고 있습니다.
근데 JDBC로 접속을 시도하면 드라이버까지는 등록되는데 그뒤로는 아무런
응답도 없고 멈춰 있습니다.
IP와 PORT DATABASE 이름은 JDBC와 ODBC 동일하게 세팅하였습니다.
JDBC 드라이버는 db2java.zip 으로 7버전과 8버전 두가지로 테스트 해봤습니다.
서버에서 JDBC드라이버를 꼭 받아와서 세팅해야 하나요?
현제 서버 관리자와 연락이 닿기가 너무 힘들어서요...
벌써 몇일째 삽질하고 있습니다.
DB2 아시는 분은 도와 주세요.
ㅠㅠ


import java.sql.*;
import java.util.*; //등록된 드라이버를 확인하기 위함 (안써도 됨)
import java.lang.*;

public class MT1 {
public static void main(String[]args)
{
Connection con=null;
Statement stmt;
System.out.println("드라이버를 로드시작 합니다");
try{
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
/* ODBC 연결 드라이버 */

//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

System.out.println("드라이버 등록 완료!");
Enumeration m=DriverManager.getDrivers();
System.out.println("등록된 드라이버는 ");
while(m.hasMoreElements())
{
System.out.println("name: "+m.nextElement());//예외발생하면예외발생한드라이버명을표시
}
}catch(Exception e) {
System.out.println("드라이버가 없거나 오류입니다.");
Enumeration m=DriverManager.getDrivers();
System.out.println("등록된 드라이버는 ");
while(m.hasMoreElements())
{
System.out.println("name: "+m.nextElement());//예외발생하면예외발생한드라이버명을표시
}
}
//1.드라이버를 드라이버매니저에 등록하는 부분...(종료)
try{
String URL = "jdbc:odbc:DB2";
String user = "kimjj";
String pass = "12qwaszx";

//con = DriverManager.getConnection("jdbc:odbc:DB2","kimjj","12qwaszx");
con = DriverManager.getConnection("jdbc:db2://158.98.108.114:50000/TSD621AI","kimjj","12qwaszx");
if(con!=null) System.out.println("DB2 연결됨");

stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select problem_code from TSD621AI.PROBLEM_VIEW");

while(rs.next()){
String tt = rs.getString(1);
System.out.println(tt);
}
}catch(Exception ex){System.out.println("연결안됨:"+ex);}//db서버가 꺼져있거나
}
}




이 글에 대한 댓글이 총 3건 있습니다.

DB2 v8 기준으로 말씀드리겠습니다.



v8 이전의 JDBC driver을 DB2 JDBC drvier라고 하고,

v8 이후에 새롭게 추가된 JDBC driver를 Universal JDBC driver라고 명명하고 설명합니다.

v8 이상에서는 Universal JDBC Driver를 사용할 것을 권장합니다.



Class files

- db2java.zip : DB2 JDBC Type 2 and Type 3 Driver

- db2jcc.jar : Universal Type 2 and Type 4 Driver

License jar files (Universal JDBC driver를 사용할 때 필요)

- db2jcc_license_cu.jar : for connecting DB2 v8 for LUW

- db2jcc_license_cisuz.jar : for connecting DB2 for iSeries and z/OS

JDBC Drvier class name

- DB2 JDBC Type 2 Driver : COM.ibm.db2.jdbc.app.DB2Driver

- DB2 JDBC Type 3 Driver : COM.ibm.db2.jdbc.net.DB2Driver

- Universal JDBC Type 2 Driver : com.ibm.db2.jcc.DB2Driver

- Universal JDBC Type 4 Driver : com.ibm.db2.jcc.DB2Driver

JDBC url name

- DB2 JDBC Type 2 Driver : jdbc:db2:db_name

- DB2 JDBC Type 3 Driver : jdbc:db2://host_name:port_name/db_name

- Universal JDBC Type 2 Driver : jdbc:db2:sample

- Universal JDBC Type 4 Driver : jdbc:db2://host_name:port_name/db_name



Sample program


import java.sql.*;
Connection con;
Statement stmt;
ResultSet rs;
Class.forName(“com.ibm.db2.jcc.DB2Driver”);
con = DriverManager.getConnection(“db2:jdbc://server1:50000/sample”);
stmt = con.createStatement();
rs = stmt.executeQuery(“select EMPNO from EMPLOYEE”);
while (rs.next()) {
s = rs.getString(1);
}
rs.close();
stmt.close();
con.close();


DB2 and JAVA Developer Domain

http://www7b.boulder.ibm.com/dmdd/zones/java/



도움이 되시길 바랍니다.







이정권(jkwonl)님이 2005-10-28 23:01:07에 작성한 댓글입니다.V8 JDBC는 위에 글에 자세히 설명되어 있으니 참조하세요.

db2의 JDBC DRIVER type에는 4가지 type이 있습니다.

님께서 처음에 odbc로 연결할때 사용하셨다는 driver는

type1 driver로 JDBC-ODBC bridge driver라고 합니다. 이 것은 odbc conversion때문에 사용하지만 일반적으로 사용되지는 않습니다. 그다음에 테스트하신 driver는

type 3 driver로 일반적으로 net driver라고 부릅니다.

db2 V7까지는 사용되었습니다. 하지만 V8부터 type4 driver가 지원되면서 거의 사용하지는 않습니다.

type 4 driver가 일반적으로 말하면 jdbc thin driver라고 할수 있습니다. 순수 자바로 구현되어 있습니다.

db2 V7까지는 type 4 driver가 지원하지 않았기 때문에 일반적으로 type 2 driver를 사용하였고 그다음에 type 3 driver를 사용하였습니다.

type 2 driver는 app driver라고 합니다. type 2 driver는 클라이언트에 db2 client 를 설치하고 서버 db와 카탈로그를 설정한 상태에서 사용하는 방식입니다.

위의 소스에서 님께서 테스트하다가 실패하신 방식은 type 3 driver방식입니다. 하지만 이방식은 먼저 선행 작업이 서버에서 이루어 져야 합니다.

서버에서 db2jd라는 프로세스가 구동되어야 합니다.

db2jstrt 포트번호

라고 치면 db2jd라는 프로세스가 설정한 포트번호를 가지고 구동을 합니다.

그러면 net driver에서 그포트번호로 연결을 하셔야 합니다.

예) db2strt 51000

jdbc:db2://158.98.108.114:51000/TSD621AI

그리고 클라이언트의 db2jdbc.zip은 서버의 jdbc driver와 버젼이 일치하여야 합니다. 만일 db 서버가 db2 v8이면 위의 글과 같은 type 4 driver를 사용하시고 v7이면 type 4를 사용하시지 못하기 때문에 type2나 type3를 사용하시면 됩니다.
반응형

'Know > DATABASE' 카테고리의 다른 글

[mssql] 복구 스크립트  (0) 2006.10.20
DB2 HADR 문서  (0) 2006.09.09
JDBC FAILOVER 구현예제  (0) 2006.07.12
rollup  (0) 2006.02.15
IBM WebSphere 5.0 데이타베이스 연결 설정법  (0) 2005.06.23