2010-02-26 77 views
3

我一直試圖通過JDBC連接到MS Access 2007數據庫。我的JDK是JDK 1.6u18 64位,操作系統是Windows 7 64位。但問題是我無法使用Windows\system32\odbcad32.exe創建DSN,因爲它根本不顯示MS Access的ODBC驅動程序,它只顯示MS SQL Server的驅動程序。無法通過Win7上的JDBC連接到MS Access數據庫64位

當試圖點擊配置「MS Access數據庫」(這是一個已經創建的DSN,我猜)時,它首先顯示錯誤消息:「Microsoft Access驅動程序的安裝例程(* .mdb,*。 accdb)ODBC Driver找不到,請重新安裝驅動程序。「 然後另一條消息:「發現錯誤!指定的DSN包含驅動程序和應用程序之間的體系結構不匹配。」

我無法重新安裝MDAC,因爲它不適用於Windows 7(它自帶的WDAC)。

Windows\SysWOW64中的odbcad32.exe的確讓我爲MS Access創建了一個DSN,它顯示了正確安裝的驅動程序。然而,通過Java程序試圖連接到DSN的時候,我得到以下異常:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains 
an architecture mismatch between the Driver and Application 
      at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) 
      at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) 
      at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) 
      at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) 
      at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) 
      at java.sql.DriverManager.getConnection(Unknown Source) 
      at java.sql.DriverManager.getConnection(Unknown Source) 
      at AccessTest.main(AccessTest.java:19) 

可能是什麼問題,我有什麼做的就是它的工作?我的操作系統以及JDK都是64位的。我無法連接到Access 2007數據庫,我認爲它是32位的?任何幫助將不勝感激。此外,如果有人認爲這不是一個正確的地方這個問題,我提前道歉。然後請引導我到適當的論壇。

另一種選擇是爲MS Access找到第三方JDBC驅動程序。但我確實需要知道我的配置有什麼問題。 : -/

PS:我知道有很多更好的數據庫可用,但有幾個不幸的原因,我只能使用MS Access並且必須讓它工作。

回答

0

如果你的JVM是64位的,你需要一個64位的ODBC驅動程序。使用您從控制面板訪問的64位odbc管理員並在其中定義數據源。它應該工作...

+1

如果你還沒有完成@Remou的建議,這對你沒有任何好處。 – 2010-05-20 01:18:17

1

我也有一段時間了這個問題,我終於找到了一個解決方案,所以這裏是爲所有人。

爲了建立ODBC連接,我不得不使用odbcad32.exe的的32位版本,您可以在C發現:\ WINDOWS \ SYSWOW64 \ odbcad32.exe的,就像你一樣。我從這裏得到了我的信息:http://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx

就像你,一旦我這樣做了,我的連接仍然給了架構不匹配錯誤。

我想,由於驅動程序是一個32位驅動程序,我可以嘗試使用32位JVM運行我的應用程序。所以,我下載了JRE 6U26 32位版本,並且一切正常。

我希望這會有所幫助。

1

如果您在運行Windows 7時遇到JDBC錯誤(如上所述),那麼您安裝的Java 64位不是堅持32位。所以安裝Java 6 32位JVM,一切都恢復正常。這是提供你正在運行正常的32位MS Access像你以前。

相關問題