指定的DSN包含体系结构不匹配错误

我收到了这个错误:

指定的DSN包含驱动程序和应用程序之间的体系结构不匹配

尝试使用NetBeans和Java编程语言连接到数据库时

我正在使用Microsoft Access 2010和我的系统在64位Windows 7上运行。

我该如何解决这个问题? 感谢大家。

在以下情况下会出现该消息:

  • 你安装了Access数据库引擎(又名“ACE”),
  • 您为数据库连接创建ODBC DSN,和
  • 您的Java代码在JVM(Java虚拟机)中运行,其“bit-ness”与已安装的ACE版本不同。

例如,

  1. 您可以安装32位版本的ACE,并尝试从64位JVM中运行的Java代码进行连接,或者

  2. 您可以安装64位版本的ACE,并尝试从运行在32位JVM中的Java代码进行连接。

如果你真的想使用JDBC-ODBC Bridge,那么解决方案就是切换到ACE的“其他”版本(即,从32位切换到64位,反之亦然),或者让你的Java代码运行与安装的ACE版本具有相同“bit-ness”的JVM。

(请注意,如果安装了Office,则“切换到64位ACE”实际上意味着“切换到64位Office”。您无法“混合和匹配”32位和64位Office组件。)

但是,现在已经从Java 8中删除了JDBC-ODBC Bridge,您应该考虑使用UCanAccess JDBC驱动程序。 它是一个纯Java实现,不使用Access ODBC来操作数据库,因此它可以在运行Java的所有平台(即不仅仅是Windows)上的32位和64位JVM下运行。 有关详细信息,请参阅

在没有ODBC的情况下从Java操作Access数据库