我正在構建一些內部工具(非生產代碼),它從我們的MS SQL數據庫中獲取一些內容。我想試用NetBeans 6.9.1,所以我使用它。Java NetBeans JDBC連接在調試中工作,不在運行
我有這個功能連接到數據庫,並且我有用於FAND_DEV的系統DSN設置爲SQL本機客戶端。
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;
}
當我在調試模式下執行代碼時,所有工作都完美無缺。我從數據庫中獲得預期的數據,沒有任何問題。
但是,當我嘗試運行(在NetBeans中運行主項目)時,它將在數據庫連接上拋出異常。任何幫助,將不勝感激。
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代碼中的一個微妙的線程錯誤。真的,只要使用JDBC,就像@John所建議的那樣。 – Rogach 2011-04-26 16:55:29