在Windows 2008上,如何将64位Java ODBC驱动程序与Access数据库一起使用?

在Windows 2008上,如何将64位Java ODBC驱动程序与Access数据库一起使用?,java,ms-access,64-bit,Java,Ms Access,64 Bit,多年来,在32位系统上,我从未遇到过问题。为什么在Windows Server 2008上不能将64位Java ODBC驱动程序与Access数据库一起使用?64位系统上的ODBC驱动程序是用32位代码还是其他代码编写的?下面是我看到的错误,使用64位JDK1.6.018: java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch betw

多年来,在32位系统上,我从未遇到过问题。为什么在Windows Server 2008上不能将64位Java ODBC驱动程序与Access数据库一起使用?64位系统上的ODBC驱动程序是用32位代码还是其他代码编写的?下面是我看到的错误,使用64位JDK1.6.018:

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)
       .....
我怀疑Access驱动程序是32位的,因为它没有显示在windows的64位ODBC控制面板中。在ODBC控制面板的“驱动程序”选项卡中,只有两个64位驱动程序(用于SQL Server)可见


那么,我能做什么?我不想使用SQL Server和JDBC Type-4驱动程序(但这是我最后的选择)。

Office 2010中的Microsoft Access将采用64位版本。Microsoft Office的早期版本仅为32位

使用既免费又易于使用,Access和Java可以连接到它,因此它似乎是一个不错的选择


既然您说这是最后的选择,那么另一个选择就是运行32位JDK,它在Server 2008上应该可以正常运行。

您是否尝试过从Windows 2008启动32位ODBC管理器-看看这是否有助于诊断问题


Odbcad32.exe文件的32位版本位于%systemdrive%WindowsSysWoW64文件夹中

我遇到了相同的问题,解决方案是使用32位JDK。

我遇到了相同的问题。原因是我使用了64位ODBC DSN和32位JDK。它们应该是相同的体系结构(ODBC DSN和JDK都需要64位或32位)。如果在32位上注册ODBC DSN并从64位应用程序(64位JVM)调用,则会出现一个错误,即找不到DSN源(因此,应用程序要查看ODBC源,则运行应用程序的JVM应与ODBS DSN具有相同的体系结构:两者都必须是64位,或者都是32位)。希望这有帮助

如果使用Microsoft Office 2010,它将返回64位体系结构。
因此,它将删除与驱动程序和应用程序之间的架构不匹配相关的错误。

在我的例子中,我在XP上有一个32位JDK 6u45,它使用jdbc:odbc驱动程序查询.accdb文件。因此,我有一个32位JDK和一个32位MS Office,当我安装它时,它会自动在我的计算机上安装必要的驱动程序。 然后,我将项目转移到了一个Windows 7,它有一个32位JDK 6u45的Netbeans 7.3,但有一个64位MS Office 2013,所以这似乎是个问题,如果您安装了32位JDK,那么您需要一个32位版本的Office(带有该Office版本附带的适当驱动程序)。64位版本也一样。


在我的例子中,我搜索了Oracle的Java归档文件,查找64位版本的JDK6u45,并将项目的JDK更改为64位版本。

我认为在64位机器上运行32位JDK有问题。我怀疑这与JVM如何使用.dll来处理内存(RAM)管理有关。我在尝试时遇到了麻烦,这就是我使用64位jdk的原因。@djangofan,限制将是JVM可以使用多少内存。当然,如果有微妙的问题,我也不一定知道。64位ACE的beta版已经可以下载了,所以这里的其他人都说他们已经使用了它并取得了成功。最新的非beta版64位Access驱动程序,2010年12月后可供下载,对我来说似乎更稳定,运行良好(只要系统上还安装了32位MS Office 2003)。没有安装任何MS Office的Access驱动程序本身仍然给我带来问题。是的,当我意识到有2个ODBC控制面板时,事情开始变得有意义。只有安装了32位MS Office 2010,32位JDK才能工作。此外,在这种情况下,您通常需要使用位于SYSWOW64目录。我之所以说“一般”,是因为有一些警告。