2011-04-26 47 views
2

我正在構建一些內部工具(非生產代碼),它從我們的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) 
+0

似乎它是JDBC-ODBC代碼中的一個微妙的線程錯誤。真的,只要使用JDBC,就像@John所建議的那樣。 – Rogach 2011-04-26 16:55:29

回答

0

對於MS SQL,您應該可以使用JDBC而不是使用JDBC-ODBC橋。但是,原因可能與this有關。原因可能是由於您返回的數據類型。 This似乎舉了一個例子。

+0

我確實放棄了這一點,只是轉而使用JDBC。 – Sheridan 2011-07-27 16:50:52

相關問題