64位Java can';t通过ODBC访问32位MS access数据库

64位Java can';t通过ODBC访问32位MS access数据库,java,ms-access,odbc,64-bit,Java,Ms Access,Odbc,64 Bit,我有一台新的64位笔记本电脑,安装了STS64位和Java64位。我正在尝试创建一个到32 bi Microsoft数据库的ODBC连接;但是,默认的管理工具不提供访问驱动程序。在谷歌搜索之后,我发现C:\Windows\SysWOW64\odbcad32.exe中有一个用于创建32位驱动程序的管理工具。但是,从中创建的ODBC连接在运行程序时会显示一条错误消息,指示体系结构不匹配: “[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配” 我认

我有一台新的64位笔记本电脑,安装了STS64位和Java64位。我正在尝试创建一个到32 bi Microsoft数据库的ODBC连接;但是,默认的管理工具不提供访问驱动程序。在谷歌搜索之后,我发现C:\Windows\SysWOW64\odbcad32.exe中有一个用于创建32位驱动程序的管理工具。但是,从中创建的ODBC连接在运行程序时会显示一条错误消息,指示体系结构不匹配:

“[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配”

我认为这是因为64位Java试图使用32位驱动程序。为了解决这个问题,我尝试将参数“-D32”放在VM参数中,但得到了相同的结果


我正在考虑卸载STS和Java,并用32位版本替换它们。有更好的解决办法吗

要加载32位本机库,您需要一个32位JVM

您不需要卸载Java,您可以安装任意多个版本


您可以使用64位JVM与加载驱动程序的32位JVM对话,但这可能比您需要的更复杂。

有一个免费的64位MS Access驱动程序,适合吗?我刚读过,但是用户说它有问题。哪些用户?这一阶段已经有两年的历史了,2013年的版本即将推出。我想任何关于buggy ness的评论都是来自过去的。你提供的链接说它是用来为office 2010应用程序交换数据的,但我运行的是2007。它还说这是Jet engine的一个发行版-我不确定这对我现有的Access安装有什么影响。@Remou错误的建议-64位驱动程序只能在系统上安装Office 64位。正如我所怀疑的,最后我只安装了32位版本的STS和Java,现在它可以工作了。我确实尝试过将64位版本上的STS.ini更改为指向32位JDK,但它不起作用。@PeterLawrey:我从来都不明白这一点。你可以在64位PC中使用32位dll,但不能在64位JVM中使用。但为什么呢?在64位操作系统中,你可以运行纯64位程序或纯32位程序。其中一个原因是指针大小需要匹配。假设您有一个64位指针,并且您调用了一个为32位指针编译的库,那么该库无法接受该指针。类似地,如果您有64位库,它无法将64位指针返回到32位应用程序。操作系统允许您运行两套系统库,一套32位,一套64位。您可以运行两种大小的系统库的原因是操作系统提供了两种版本的系统库,一套32位,一套64位。@PeterLawrey:啊!谢谢你的解释!(+1)