【问题标题】:How to connect MS Access Database using Java program?如何使用 Java 程序连接 MS Access 数据库?
【发布时间】:2011-10-16 09:21:31
【问题描述】:

我想编写一个程序来从 MS Access 数据库中检索数据。我写的程序如下:

package db;

import java.sql.*;

public class MSaccess_archive {
    public static void main(String[] args) {

        try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            String accessFileName = "E:/L4_project/sample/db/Database";

            String connURL="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+accessFileName+".accdb;";

            Connection con = DriverManager.getConnection(connURL, "","");

            Statement stmt = con.createStatement();

            stmt.execute("select * from student"); // execute query in table student

            ResultSet rs = stmt.getResultSet(); // get any Result that came from our query

            if (rs != null)
             while ( rs.next() ){

                System.out.println("Name: " + rs.getString("Name") + " ID: "+rs.getString("ID"));
                }

                stmt.close();
                con.close();
            }
            catch (Exception err) {
                System.out.println("ERROR: " + err);
            }
    }

}

但我得到了如下异常:

错误:java.sql.SQLException:[Microsoft][ODBC Microsoft Access 驱动程序] 找不到文件“(未知)”。

当我使用.mdb 文件时,上述程序可以正常工作,但如果我使用.accdb 文件,则会出现上述异常。

有什么想法吗?

【问题讨论】:

  • 不确定但尝试更改斜杠: String accessFileName = "E:/L4_project/sample/db/Database";双反斜杠: String accessFileName = "E:\\L4_project\\sample\\db\\Database";
  • 谢谢。它正在工作...... :)
  • 请注意,JDBC-ODBC 桥已从 Java 8 中删除并且不受支持(参考:herehere)。 UCanAccess 是一种流行的替代方案(详情 here)。

标签: java database ms-access


【解决方案1】:

驱动程序可能尚未更新为读取该格式。 .mdb 是 Access 的原始文件; .accdb 肯定已经修改过,而 ODBC 驱动程序没有跟上。

【讨论】:

    【解决方案2】:

    除非您特别需要能够运行任意 sql 查询,否则您可以随时尝试jackcess

    【讨论】:

      【解决方案3】:

      您可以重新访问步骤, 控制面板>管理工具>数据源>添加>Microsoft Access Drivers(*mdb,*accdb)>ok>ok>ok。 它可能会工作。用于 ODBC 连接。

      【讨论】:

        【解决方案4】:

        我认为您需要将jdbc:odbc:my_access_odbc_dsn 指定为 URL,其中 my_access_odbc_dsn 是您在 ODBC 中配置的 DSN 名称。就我而言,我正在访问一个名为“PavoDB”的 MS Access 2013 数据库,所以我的 URL 是:

        private static final String url="jdbc:odbc:PavoDB";
        

        【讨论】:

          【解决方案5】:

          JDBC-ODBC 桥已从 Java 8 中删除并且不受支持(参考:herehere)。 UCanAccess 是一种流行的替代方案。详情见

          Manipulating an Access database from Java without ODBC

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多