【问题标题】:64-bit Java can't access 32-bit MS Access database via ODBC64 位 Java 无法通过 ODBC 访问 32 位 MS Access 数据库
【发布时间】:2012-08-26 14:24:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • 有一个免费的 64 位 MS Access 驱动程序,适合吗? microsoft.com/en-us/download/details.aspx?id=13255
  • 我刚读过它,但用户说它有问题。
  • 哪些用户?在这个阶段它已经有两年的历史了,2013 年的版本正在开发中。我想任何关于越野车的 cmets 都是过去的。
  • 您提供的链接说它用于为 Office 2010 应用程序交换数据,但我正在运行 2007。它还说它是 Jet 引擎的分发 - 我不确定会产生什么影响在我现有的 Access 安装上。
  • @Remou 错误建议 - 仅当系统上之前安装了 Office 64 位时才能安装 64 位驱动程序

标签: java ms-access odbc 64-bit


【解决方案1】:

要加载 32 位本机库,您需要有 32 位 JVM。

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

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

【讨论】:

  • 正如我所怀疑的,最后我只是安装了 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)
猜你喜欢
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2012-08-29
  • 2015-01-06
  • 2013-09-13
  • 1970-01-01
  • 2012-02-10
  • 2015-08-28
相关资源
最近更新 更多