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

时间:2013-11-15 18:55:31

标签: java ms-access netbeans jdbc jdbc-odbc

我收到了这个错误:

  

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

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

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

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

1 个答案:

答案 0 :(得分:3)

在以下情况下会显示该消息:

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

例如,

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

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

  3. 如果确实想要使用JDBC-ODBC Bridge,那么解决方案是切换到ACE的“其他”版本(即,从32位切换到64位或者副本反之亦然,或让您的Java代码在JVM下运行,其安装版本与ACE相同。“/ p>

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

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

    Manipulating an Access database from Java without ODBC