2011-04-26 2 views
2

MS SQL DB에서 물건을 얻는 내부 도구 (비 프로덕션 코드)를 만들고 있습니다. NetBeans 6.9.1을 사용해보고 싶었 기 때문에 NetBeans 6.9.1을 사용하고 있습니다.Java NetBeans JDBC 연결이 실행 중이 아닌 디버그에서 작동 중

DB에 연결하는이 함수가 있으며 SQL Native Client로 FAND_DEV 설정을위한 시스템 DSN이 있습니다.

private static Connection GetConnection() { 
      Connection conn = null; 
     try {    
      conn = DriverManager.getConnection("jdbc:odbc:FAND_DEV"); 
     } catch (SQLException ex) { 
      Logger.getLogger(DAL.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     return conn; 
} 

디버그 모드에서 코드를 단계별 실행하면 모든 것이 완벽하게 작동합니다. 예상되는 데이터를 문제없이 DB에서 다시 얻고 있습니다.

그러나 (NetBeans에서 주 프로젝트 실행) 실행하려고하면 DB 연결에서 예외가 발생합니다. 이것에 대한 도움은 크게 감사 할 것입니다.

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length 
     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) 
     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) 
     at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907) 
     at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698) 
     at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354) 
     at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503) 
     at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381) 
     at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:207) 
     at gosDbCopy.db.DAL.GetConnection(DAL.java:53) 
+0

JDBC-ODBC 코드 내부의 미묘한 스레딩 버그처럼 보입니다. @John이 제안한 것처럼 실제로 JDBC 만 사용해보십시오. – Rogach

답변

0

MS SQL을 사용하면 JDBC-ODBC 브리지 대신 JDBC를 사용할 수 있습니다. 원인은 this과 관련 될 수 있습니다. 원인은 귀사가 반환하는 데이터 유형 때문일 수 있습니다. This은 그 한 가지 예를 보여줍니다.

+0

나는 이것을 포기하고 결국 JDBC로 전환했다. – Sheridan

관련 문제