2010-03-04 28 views
5

多年來,在32位系統上,我從來沒有遇到過問題。爲什麼我無法在Windows Server 2008上使用Access數據庫的64位Java ODBC驅動程序? 64位系統上的ODBC驅動程序是用32位代碼寫的嗎?下面是一個使用64位JDK1.6.018錯誤我看到:如何在Windows 2008上使用Access數據庫的64位Java ODBC驅動程序?

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(JdbcOdbc.java:6957) 
     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) 
     at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) 
     at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) 
     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) 
     ..... 

我懷疑訪問驅動程序是32位的,因爲它沒有爲Windows 64位ODBC控制面板顯示。 ODBC控制面板的「驅動程序」選項卡中僅顯示兩個64位驅動程序(用於SQL Server)。

那麼,我該怎麼辦?我寧願不必使用SQL Server和JDBC Type-4驅動程序(但那將是我的最後手段)。

回答

0

Office 2010中的Microsoft Access將具有64位版本。早期版本的Microsoft Office只有32位。

使用SQLExpress既便於使用又易於使用,Access和Java可以連接到它,所以它看起來是一個不錯的選擇。

既然你說,這是最後的手段,另一種選擇是運行32位的JDK,它應該運行服務器上的微細2008

+0

我相信在64位機器上運行32位JDK時出現問題。我懷疑它與JVM如何使用.dll來處理內存(RAM)管理有關。我遇到了麻煩,當我嘗試時,這就是爲什麼即時通訊使用64位jdk。 – djangofan 2010-03-04 23:55:24

+0

@djangofan,限制將在JVM可以使用多少內存。當然,如果有微妙的問題,我不一定知道。 – Yishai 2010-03-05 00:11:23

+0

是的,可能是真的。我認爲你也是這麼想的,起初... – djangofan 2010-03-05 00:46:32

2

您是否嘗試過推出32位ODBC管理器從Windows 2008 - 看看這是否有助於您診斷問題?

的odbcad32.exe的文件的32位版本位於%SYSTEMDRIVE%WindowsSysWoW64文件夾

+0

有幫助的答案。謝謝。 – djangofan 2010-11-02 00:12:05

1

我有同樣的問題和解決方案,在我的情況,是使用一個32位的JDK。

+2

只有安裝了32位MS Office 2010時,32位JDK才能正常工作。此外,在這種情況下,您通常需要使用位於SYSWOW64目錄中的odbccad32.exe控制面板。我說「一般」,因爲有一些警告。 – djangofan 2012-05-22 16:49:14

2

我有同樣的問題。原因是我使用64位ODBC DSN和32位JDK。這些應該是相同的架構(ODBC DSN和JDK都需要是64位或32位)。如果您要在32位上註冊ODBC DSN並從64位應用程序(64位JVM)調用,則會出現DSN源未找到的錯誤(因此,應用程序要查看ODBC源 - 您正在運行應用程序的JVM應該與ODBS DSN具有相同的體系結構:兩者都需要64位,或者都是32位)。希望這可以幫助。

+0

是的,當我意識到有2個ODBC控制面板時,事情就開始有意義了。 – djangofan 2012-05-22 16:47:40

2

如果您使用Microsoft Office 2010,它將返回到64位體系結構。 因此,它將刪除與驅動程序和應用程序之間的架構不匹配有關的錯誤。

1

就我而言,我對所使用的JDBC一個XP 32位JDK 6u45:ODBC驅動程序來查詢.ACCDB文件。所以我有一個32位的JDK和一個32位的MS Office,當我安裝它時,它會自動在我的電腦中安裝必要的驅動程序。 然後,我將項目移至Windows 7,使用Netbeans 7.3,使用32位JDK 6u45,但使用64位MS Office 2013,這似乎是問題,如果您安裝了32位JDK,則需要使用32位版本的Office(帶有該Office版本附帶的正確驅動程序)。和64位版本一樣。

在我來說,我搜索了Oracle的Java存檔JDK6u45的64位版本和改變了JDK的項目到64位版本

相關問題