天天看點

java為什麼不使用odbc_JAVA使用ODBC連接配接資料庫抛錯問題 [Microsoft][ODBC 驅動程式管理器] 無效的字元串或緩...

困擾N多人的典型的資料源問題,所有一切設定好之後運作程式之後會出現如下類似的報錯:java.sql.SQLException:

[Microsoft][ODBC 驅動程式管理器] 無效的字元串或緩沖區長度

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:185)

at com.data.Data.main(Data.java:23)

出現這種情況的原因就是windows

64位系統的預設資料源設定是64位的,在控制台進入之後設定資料源會發現不會顯示多有的資料驅動。是以要使用32位的資料源程式:C:\Windows\SysWOW64\odbcad32.exe

這時候會使用32位的資料源設定,所有安裝的資料庫驅動也就都顯示出來了。【以下選自百度百科:】ODBC 不适合直接在 Java

中使用,因為它使用 C 語言接口。從Java 調用本地 C代碼在安全性、實作、堅固性和程式的自動移植性方面都有許多缺點。從 ODBC

C API 到 Java API 的字面翻譯是不可取的。例如,Java 沒有指針,而 ODBC

卻對指針用得很廣泛(包括很容易出錯的指針"void *")。您可以将 JDBC 想象成被轉換為面向對象接口的

ODBC,而面向對象的接口對 Java程式員來說較易于接受。

很多人如此設定後,再用eclipse運作寫好的java程式就沒問題了。但是我的依舊還是抛錯,仔細查了一下是因為我的java版本也是64位的,而64位的java對ODBC的支援貌似是有問題。是以如果系統是64位,java版本還是64位,那麼連接配接資料庫就不要用ODBC了,用JDBC直接連接配接吧!