【问题标题】:Java connection to MS Access Database与 MS Access 数据库的 Java 连接
【发布时间】:2014-03-09 13:31:33
【问题描述】:

只是想知道是否有人可以帮助我,我正在尝试连接到 MS Access 数据库。我在其他项目上做过,并使用了完全相同的代码。谁能看看我是不是做错了什么?

try {
        System.out.println("Attempting Database Connection");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String sourceURL = "jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=MotivationDatabase.mdb;";
        connection = DriverManager.getConnection(sourceURL, "", "");
        stmt = connection.createStatement();
        System.out.println("Connection made");
    } catch (Exception e) {
        System.out.println("Database connection attempt failed");
        System.out.println(e);
    }

我不断收到错误:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

但是我的数据库与我的项目位于同一个文件夹中,就像我之前所做的那样,我不确定为什么会收到此错误。帮忙?

【问题讨论】:

  • 您需要在 JDBC URL 中指定 .mdb 文件的完整路径。
  • @a_horse_with_no_name:他没有使用 JDBC。
  • @Sandeep:他/她当然是。正在使用的是 JDBC/ODBC 桥,但它仍然是 JDBC

标签: java sql database ms-access jdbc-odbc


【解决方案1】:
  • Control Panel -> Administrative Tools -> ODBC Data Sources -> Add -> Microsoft Access Driver(*mdb,*accdb)

  • 指定MotivationDatabase.mdb对应Data Source name的正确路径并保存设置。

请参考 here

代码:

public class Main {

    @SuppressWarnings("unused")
    public static void main(String[] args) {

        try {
            System.out.println("Attempting Database Connection");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sourceURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="
            + "D:\\MotivationDatabase.mdb";
            Connection connection = DriverManager.getConnection(sourceURL);
            System.out.println("Connection made");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

输出:

P.S:请学习以 JDBC-ODBC Bridge will be removed in JDK8 的身份使用 JDBC。请参阅 here .

编辑:

您还可以使用 JDBC 和 UCanAccess API 连接到 MSAccess 数据库。您的项目构建路径中需要以下 jars。

  1. commons-lang-2.6.jar
  2. commons-logging-1.1.1.jar
  3. hsqldb.jar
  4. jackcess-2.1.0.jar
  5. ucanaccess-2.0.9.5.jar

代码:

connection = DriverManager
.getConnection("jdbc:ucanaccess:////REMOTE-IP-ADDRESS/shared-folder/TestDB.mdb");
System.out.println("CONNECTION ESTABLISHED....");

适用于 JDK8。您可以从 here 下载整个源代码。

【讨论】:

  • 我已经这样做了,但仍然是同样的错误,老实说,我不知道哪里出了问题。
【解决方案2】:

当 java 8 即将发布时,Sun JDBC ODBC 将无法与 MS 访问一起使用:我建议您使用 apache poi 项目。它很简单,效果很好。

是的,正确的项目是 jakcess:

import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Row;
import com.healthmarketscience.jackcess.Table;
try{Table table = DatabaseBuilder.open(new File("filename")).getTable("tablename");
    righe.add(0);
    for(Row row : table) {
        String articolo=row.get("ColName").toString();

【讨论】:

    【解决方案3】:

    试试这个类的名字和连接 URL。将下面的 jar 文件添加到你的项目中:

    commons-lang.jar,commons-logging.jar,hsqldb.jar,jackcess.jar,ucanaccess.jar

    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    //change the path with your own accdb file
    String URL = "jdbc:ucanaccess://D:\\projects\\test.accdb";
    Connection con = DriverManager.getConnection(URL);
    

    【讨论】:

      最近更新 更多