困擾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直接連接配接吧!