【问题标题】:How do I use 64-bit Java ODBC driver with a Access database on Windows 2008?如何在 Windows 2008 上将 64 位 Java ODBC 驱动程序与 Access 数据库一起使用?
【发布时间】:2010-03-04 17:49:17
【问题描述】:

多年来,在 32 位系统上我从未遇到过问题。为什么我不能在 Windows Server 2008 上将 64 位 Java ODBC 驱动程序与 Access 数据库一起使用? 64 位系统上的 ODBC 驱动程序是用 32 位代码编写的还是什么?这是我看到的错误,使用 64 位 JDK1.6.018 :

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
        at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
       .....

我怀疑 Access 驱动程序是 32 位的,因为它没有显示在 Windows 的 64 位 ODBC 控制面板中。在 ODBC 控制面板的“驱动程序”选项卡中只能看到两个 64 位驱动程序(用于 SQL Server)。

那么,我该怎么办?我宁愿不必使用 SQL Server 和 JDBC Type-4 驱动程序(但这将是我最后的手段)。

【问题讨论】:

    标签: java ms-access 64-bit


    【解决方案1】:

    您是否尝试过从 Windows 2008 启动 32 位 ODBC 管理器 - 看看这是否有助于您诊断问题?

    32 位版本的 Odbcad32.exe 文件位于 %systemdrive%WindowsSysWoW64 文件夹中

    【讨论】:

      【解决方案2】:

      我有同样的问题。原因是我使用 64 位 ODBC DSN 和 32 位 JDK。这些应该是相同的架构(ODBC DSN 和 JDK 都需要是 64 位或 32 位)。如果您要在 32 位上注册 ODBC DSN 并从 64 位应用程序(64 位 JVM)调用,您将收到未找到 DSN 源的错误(因此,应用程序要查看 ODBC 源 - 您正在运行应用程序的 JVM应该是与 ODBS DSN 相同的架构:两者都需要是 64 位,或者都是 32 位)。希望这可以帮助。

      【讨论】:

      • 是的,当我意识到有 2 个 ODBC 控制面板时,事情就开始变得有意义了。
      【解决方案3】:

      如果您使用 Microsoft Office 2010,它将返回到 64 位架构。 因此,它将消除与驱动程序和应用程序之间的架构不匹配有关的错误。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,就我而言,解决方案是使用 32 位 JDK。

        【讨论】:

        • 32 位 JDK 仅在您安装了 32 位 MS Office 2010 时才能工作。此外,在这种情况下,您通常需要使用位于 SYSWOW64 目录中的 odbccad32.exe 控制面板。我说“一般”是因为有一些警告。
        【解决方案5】:

        就我而言,我在 XP 上有一个 32 位 JDK 6u45,它使用 jdbc:odbc 驱动程序来查询 .accdb 文件。所以我有一个 32 位的 JDK 和一个 32 位的 MS Office,当我安装它时,它会自动在我的计算机中安装必要的驱动程序。 然后我将项目移动到带有 Netbeans 7.3 和 32 位 JDK 6u45 但 64 位 MS Office 2013 的 Windows 7,所以这似乎是问题所在,如果您安装了 32 位 JDK,那么您需要 32 位Office 版本(使用该 Office 版本附带的正确驱动程序)。和 64 位版本一样。

        在我的例子中,我在 Oracle 的 Java 存档中搜索了 64 位版本的 JDK6u45,并且将项目的 JDK 更改为 64 位版本

        【讨论】:

          【解决方案6】:

          Office 2010 中的 Microsoft Access 将具有 64 位版本。早期版本的 Microsoft Office 仅为 32 位。

          使用SQLExpress既免费又好用,Access和Java都可以连接,看来是个不错的选择。

          既然你说这是最后的手段,另一个选择是运行 32 位 JDK,它应该在 Server 2008 上运行良好。

          【讨论】:

          • 我认为在 64 位机器上运行 32 位 JDK 存在问题。我怀疑这与 JVM 如何使用 .dll 来处理内存 (RAM) 管理有关。当我尝试时遇到了麻烦,这就是我使用 64 位 jdk 的原因。
          • @djangofan,限制在于 JVM 可以使用多少内存。当然,如果有细微的问题,我不一定知道。
          • 64 位 ACE 的测试版已经可以下载,SO 上的其他人表示他们已经使用它并取得了成功。
          • Access 驱动程序的最新非 beta 64 位版本,可在 2010 年 12 月之后下载,对我来说似乎更稳定并且运行良好(只要我有我的 MS Office 2003 32 -bit 也安装在系统上)。没有安装任何 MS Office 的 Access 驱动程序本身仍然给我带来了问题。
          猜你喜欢
          • 2012-09-03
          • 1970-01-01
          • 2023-03-31
          • 2011-10-15
          • 1970-01-01
          • 2013-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多