Java 连接到 Access 数据库

Posted

技术标签:

【中文标题】Java 连接到 Access 数据库【英文标题】:Java connect to Access Database 【发布时间】:2013-11-13 19:42:58 【问题描述】:

我试图能够从访问数据库访问数据。

我已经在 ODBC 管理器下为 *.mdb 和 *.accdb 文件配置了 odbc 驱动程序。我正在通过并行使用 Windows 7(不确定这是否会有所不同)

当我运行程序时,我收到以下错误:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no     default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3080)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at DataAccess.main(DataAccess.java:13) 

开始代码:

import java.sql.*;

public class DataAccess 

public static void main(String[] args)

    try
    
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String connURL = "jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ="+"C:\\Users\\alexmac\\Desktop\\OASDatabase\\OAS_Database";

            String table = "Student";        
            Connection conn = DriverManager.getConnection(connURL, "", "");
        Statement s = conn.createStatement();

              // Fetch table
        String selTable = "SELECT * FROM " + table;
        s.execute(selTable);
        ResultSet rs = s.getResultSet();
        while((rs!=null) && (rs.next()))
        
            System.out.println(rs.getString(1) + " : " + rs.getString(2));
        

        // close and cleanup
        s.close();
        conn.close();
    
    catch(Exception ex)
    
        ex.printStackTrace();
    


【问题讨论】:

您还可以查看 jacksess 库,它也适用于所有平台(即不是特定于 Windows 的)。在我看来,它也比面向 JDBC/ODBC 的驱动程序更易于使用。 不,Driver=MSAccessDriver ... 也不起作用。再看看我的回答。 更改了驱动程序以匹配您的答案,我相信。仍然得到同样的错误。我下载了 32 位和 64 位 jdk 两者都有。 System.out.println(System.getProperty("sun.arch.data.model")); 说什么? 64。那么它是 64 位的? 【参考方案1】:

除了上面评论中提到的双扩展问题(.accdb.accdb)之外,你的代码将无法工作,因为你指定的驱动程序名称......

DRIVER=Microsoft Access Driver (*.accdb)

...不正确。没有具有该名称的 ODBC 驱动程序。想要打开较旧的.mdb 数据库文件的 32 位应用程序可以使用

Driver=Microsoft Access Driver (*.mdb)

要从 64 位应用程序打开 .mdb 文件,或从 任何 应用程序打开 .accdb 文件,您需要使用

Driver=Microsoft Access Driver (*.mdb, *.accdb)

【讨论】:

所以我取出了 String 数据库并将 connURL 更改为 String connURL = "jdbc:odbc:Driver=MSAccessDriver (*.mdb, *.accdb);DBQ="+"C:\ \Users\\alexmac\\Desktop\\OASDatabase\\OAS_Database.accdb"; @user214577 如果您向edit您的问题提供新信息,对所有相关人员来说会更容易。

以上是关于Java 连接到 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Java 连接到 Access 数据库

将 Java 连接到网络驱动器上的 Access DB

无法从 Java WebService 连接到 MS Access 数据库

无法使用 ODBC 驱动程序将 Java 程序连接到 Access 2010 数据库

使用 JDBC 将 Microsoft Access 数据库连接到 Java 并进行编译

从 Java 连接到 SQL Server 2016 时出现 EXCEPTION_ACCESS_VIOLATION