【问题标题】:How to connect to Access .mdb database from 64-bit Java?如何从 64 位 Java 连接到 Access .mdb 数据库?
【发布时间】:2013-10-20 12:18:15
【问题描述】:

您好,我有以下代码可以连接到 Windows 7 操作系统上的 MS Access 数据库。我已将数据源快捷方式更改为指向 64 位 odbc,然后是 32 位。但仍然得到错误为

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
    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:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at TestDBConnection.main(TestDBConnection.java:21)

我的代码是:

import java.sql.Connection;
import java.sql.DriverManager;

public class TestDBConnection {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try
        {
            System.out.println("filename");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
                      "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\Tests.mdb";
            Connection conn = DriverManager.getConnection(database, "", "");
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

}

我如何拥有 SQL Workbench 工具,通过它我可以连接到它,但不能通过 java 代码。

由于过去 3 小时在 Google 上搜索,我一直在努力解决这个问题,因此非常需要帮助。

【问题讨论】:

  • 您使用的是.mdb文件的直接路径,不需要创建任何DSN。尝试添加*.accdbJDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=DBQ=C:\\Test\\Tests.mdb

标签: java ms-access


【解决方案1】:

如果您的 Java 应用程序在 64 位 Java 虚拟机 (JVM) 中运行,那么 DRIVER={Microsoft Access Driver (*.mdb)} 将无法工作,因为没有 64 位版本的 Jet 数据库引擎。你可以...

  • here 下载并安装 64 位版本的 Microsoft Access 数据库引擎,然后在您的代码中使用 DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}

...或...

  • 在 32 位 JVM 中运行您的 Java 应用程序并继续使用现有的 DRIVER= 字符串。如果您选择此选项,相关答案 here 可能会有所帮助。

...或...

  • 为 Access 数据库使用 UCanAccess JDBC 驱动程序。它是一个免费的、开源的、纯 Java 实现,因此它适用于 32 位和 64 位系统,包括 Windows 和非 Windows。它也适用于 Java 8(已删除 JDBC-ODBC 桥)。有关详细信息,请参阅:

        Manipulating an Access database from Java without ODBC

【讨论】:

  • 如果有人在使用 64 位 JVM 时遇到此错误,请尝试将“*.accdb”添加到您的“DRIVER=...”字符串中。为我工作。
  • 恢复到 32 位让我很难过,但正确导出脚本让我再次感到高兴。 (我过着简单的生活)
【解决方案2】:

您可以安装 Microsoft 提供的用于 Access 的 64 个 ODBC 驱动程序

http://www.microsoft.com/en-us/download/details.aspx?id=13255

【讨论】:

  • 由于安装了 32 位的办公程序,我被限制了这条路线。
  • 你的意思是,安装了office 32bit的时候,不能在同一个系统上同时安装64bit的odbc驱动?
  • 我认为根据我收到的错误消息。 Windows 建议我卸载我的 32 位程序。
【解决方案3】:

1) 您必须配置 System dsn (Driver Microsoft Access Driver(.mdb,.accdb)) 2) 在上述配置中链接 .mdb 数据库 并写下代码。

 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 String database = "jdbc:odbc:systemdsnname";
 Connection conn = DriverManager.getConnection(database, "", "");

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 2011-09-09
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多