什么';在Java中,连接到MicrosoftAccess2007数据库的正确方法是什么?

什么';在Java中,连接到MicrosoftAccess2007数据库的正确方法是什么?,java,jdbc,ms-access-2007,Java,Jdbc,Ms Access 2007,我正在尝试使用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)};DB

我正在尝试使用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-ODBC桥。它可以用于测试或学习JDBC,但不能用于实际生产。另外,如果您的数据源没有自己的JDBC驱动程序,但有ODBC驱动程序,那么您可能没有选择

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


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

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

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


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

一般来说,使用Java中的RDBMS的最佳方法是使用设计为直接连接到数据库的JDBC驱动程序。使用JDBC-ODBC网桥往往很慢


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

一般来说,使用Java中的RDBMS的最佳方法是使用设计为直接连接到数据库的JDBC驱动程序。使用JDBC-ODBC网桥往往很慢

如果您正试图使用Access数据库执行基本的读/写操作,我还建议您查看该库

  • 转到控制面板-->管理工具-->ODBC数据源管理员
  • 添加数据库-->选择“Microsoft驱动程序(*.mdb,*.accdb)”
  • Dobule单击“数据库”下的新建数据库-->单击“选择”-->选择您创建为MS access数据库的*.accdb文件
  • 说OK,然后转到java代码
  • 使用: forName(“sun.jdbc.odbc.JdbcOdbcDriver”); con=DriverManager.getConnection(“jdbc:odbc:filename”) 它肯定会解决你所有的问题

  • 转到控制面板-->管理工具-->ODBC数据源管理员
  • 添加数据库-->选择“Microsoft驱动程序(*.mdb,*.accdb)”
  • Dobule单击“数据库”下的新建数据库-->单击“选择”-->选择您创建为MS access数据库的*.accdb文件
  • 说OK,然后转到java代码
  • 使用: forName(“sun.jdbc.odbc.JdbcOdbcDriver”); con=DriverManager.getConnection(“jdbc:odbc:filename”)
    它肯定会解决您的所有问题。

    此外,Oracle声明JDBC-ODBC桥“将在JDK 8中删除”(参考号:)。此外,Oracle声明JDBC-ODBC桥“将在JDK 8中删除”(参考号:)。可能与@GordThompson重复,因此5年前创建的问题可能与12天前提出的问题重复?“如果新问题是更好的问题或有更好的答案,则投票关闭旧问题,作为新问题的副本。”(参考:)可能重复@GordThompson,因此5年前创建的问题可能是12天前提出的问题的副本?”如果新问题是更好的问题或有更好的答案,然后投票关闭旧版本作为新版本的副本。”(参考:)