如何使用Java程序连接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文件,它会给出上述exception。

有什么想法吗?

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

JDBC-ODBC Bridge已从Java 8中删除 ,不受支持(参考: 此处和此处 )。 UCanAccess是一种流行的替代品。 有关详情,请参阅

在没有ODBC的情况下从Java操作Access数据库

除非你特别需要能够运行任意的sql查询,你总是可以尝试一下jackcess 。

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

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