Thursday, July 02, 2009

DB2 JDBC접속이 잘안될때 해결법

테스트 환경 :  DB2 버전 8.1.xxx
OS : Windows XP
 
DB2쓸일이 있어서 셋팅해 보면서 난 오류 해결 방법 ^^
 
 
package db2.sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DB2Sample {
        /**
         * @param args
         */
        public static void main(String[] args) {
                try {
                        Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
                        Connection conn = DriverManager.getConnection("jdbc:db2://localhost:50000/SAMPLE", "user", "password");
                        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM CL_SCHED");
                        ResultSet rset = pstmt.executeQuery();
                        while(rset.next()) {
                                System.out.println(rset.getObject("CLASS_CODE"));
                        }
                        rset.close();
                        pstmt.close();
                        conn.close();
                } catch(ClassNotFoundException cnfe) {
                        System.out.println("CNFE : " + cnfe.getMessage());
                } catch(IllegalAccessException iae) {
                        System.out.println("IAE : " + iae.getMessage());
                } catch(InstantiationException ie) {
                        System.out.println("IE : " + ie.getMessage());
                } catch(SQLException sqle) {
                        System.out.println("SQLE : " + sqle.getMessage());
                }
        }
}

1.  DB에 접속이 안되는 경우(계정,포트,패스워드 이상이 없는 경우)에 접속이 안되고
    Connection conn =
    DriverManager.getConnection("jdbc:db2://localhost:50000/SAMPLE", "user", "password");
   
    위의  구문에서 멈추는 경우에는 설정한 포트번호가 아마 JDBC로 접속할수 없는 포트일 경우
    가 99% JDBC로 DB2에 접속하실때는 아마도 DB2에서 다음과 같이 JDBC접속 포트를 열어
    주어야 한다.
 
    아래와  같이 JDBC접속포트를
 
     db2jstrt <포트번호>
 
     ex) db2jstrt 50000
 
 
2. java.lang.NoClassDefFoundError: com/ibm/db2/jcc/SQLJPackage 오류가 발생하는 경우.
 
   db2jcc.jar를 클래스 패스에 추가해 주면 된다.
 
   오류 발생 위치는
 
   PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM CL_SCHED");
 
   위와 같이 preparedStatement를 구성하는 부분에서 오류가 발생하게 된다.

No comments: