【问题标题】:What's the right way in Java to connect to a Microsoft Access 2007 database?在 Java 中连接 Microsoft Access 2007 数据库的正确方法是什么?
【发布时间】:2009-03-24 02:22:29
【问题描述】:

我正在尝试使用 jdbc-odbc 桥创建一个简单的连接:

public static Connection  getConnection() {
    Connection con =null;
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" +
            "c:\\myfolder\\accesdbfile.accdb";
        con = DriverManager.getConnection(conStr);
    } catch(Exception e) {
        e.printStackTrace();}
    return con;
}

但是我得到了这个异常:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0xa4 Thread 0xec0 DBC 0x2f8574c                                                              Jet'.

有什么想法吗?

2009 年 3 月 24 日更新:现在它正在工作。创建了一个用户数据源,但由于某种原因异常消失了。

作为一个普遍的问题,在 Java 中处理数据库连接的最佳方式是什么?

【问题讨论】:

标签: java jdbc ms-access-2007


【解决方案1】:

一般而言,在 Java 中使用 RDBMS 的最佳方式是使用旨在直接连接到数据库的 JDBC 驱动程序。使用 JDBC-ODBC 桥往往会很慢。

如果您尝试使用 Access 数据库进行基本的读/写操作,我还建议您查看 Jackcess 库。

【讨论】:

    【解决方案2】:

    要回答您的一般问题,我想说在 Java 中处理数据库连接的最佳方法是避免使用 JDBC-ODBC 桥。它可以用于测试或学习 JDBC,但不适用于实际生产使用。此外,如果您的数据源没有自己的 JDBC 驱动程序但有 ODBC 驱动程序,那么您可能别无选择。

    我建议您远离它的主要原因是它使您的应用程序难以部署。您必须在运行应用程序的机器上设置数据源。如果您可以访问机器没有问题,但假设您将应用程序发送到客户端?纯 Java JDBC 驱动程序在这方面效果更好,因为它作为应用程序的一部分包含在内,因此一旦安装了应用程序,它就可以连接到数据源了。

    当然,根据您的要求,还有其他两种类型的驱动程序,但这是另一个讨论。

    【讨论】:

    • 此外,Oracle 已声明 JDBC-ODBC 桥“将在 JDK 8 中删除”(参考:here)。
    【解决方案3】:
    1. 转到控制面板 --> 管理工具 --> ODBC 数据源管理器
    2. 添加数据库 --> 选择“Microsoft Driver(*.mdb, *.accdb)”
    3. 双击新数据库 --> 在“数据库”下单击“选择” --> 选择您创建的 *.accdb 文件作为 MS 访问数据库。
    4. 说好,然后转到你的 java 代码
    5. 使用: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:filename");

    它一定会解决你所有的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-09
      • 2011-05-16
      • 1970-01-01
      • 2011-07-08
      • 2011-06-08
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      相关资源
      最近更新 更多