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