如何使用Java程序连接MS Access数据库?

时间:2011-07-30 03:23:11

标签: java database ms-access

我想编写一个程序来从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文件则会出现上述异常。

任何想法为什么?

5 个答案:

答案 0 :(得分:3)

您可以重新访问步骤, 控制面板>管理工具>数据源>添加> Microsoft Access驱动程序(* mdb,* accdb)>确定>确定>确定。 它可能有效。用于ODBC连接。

答案 1 :(得分:3)

JDBC-ODBC Bridge已从Java 8 删除,不受支持(参考:herehere)。 UCanAccess是一种受欢迎的选择。有关详细信息,请参阅

Manipulating an Access database from Java without ODBC

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我认为您需要指定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";

答案 4 :(得分:0)

驱动程序可能尚未更新以读取该格式。 .mdb是Access的原始版本; .accdb必须已经修改,并且ODBC驱动程序没有跟上。