【问题标题】:The specified DSN contains an architecture mismatch Error指定的 DSN 包含架构不匹配错误
【发布时间】:2013-11-29 06:49:23
【问题描述】:

我收到了这个错误:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    • 您已安装 Access 数据库引擎(也称为“ACE”),
    • 您为数据库连接创建了一个 ODBC DSN,并且
    • 您的 Java 代码在 JVM(Java 虚拟机)中运行,其“位数”与已安装的 ACE 版本不同。

    例如,

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

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

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

    (请注意,如果您安装了 Office,那么“切换到 64 位 ACE”实际上意味着“切换到 64 位 Office”。您不能“混合搭配”32 位和 64 位 Office 组件。 )

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

    Manipulating an Access database from Java without ODBC

    【讨论】:

    • 在我安装 Access 数据库引擎之前,ODBC 管理员无法在系统 DSN 选项卡和添加选择下添加 Microsoft 数据库引擎,我已经尝试下载 Access 数据库引擎 64 位(2010),但安装程序说我无法安装它,因为 Microsoft Office 2010。所以我决定安装 Access 数据库引擎 32 位(2010)并且 Microsoft 数据库引擎可以正常工作,我可以在系统 DSN 中的添加选择下添加它。但是当我通过 NetBeans (Java) 运行时,我得到了那个错误
    • @Kaoru 好的,所以你需要下载并安装 32 位 JDK(页面here 会引导你),然后你需要告诉 NetBeans 使用 32 位该特定项目的平台(更多信息在另一个问题here)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2016-08-26
    • 2014-01-12
    相关资源
    最近更新 更多