与MS Access数据库的Java连接

时间:2014-03-09 13:31:33

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

只是想知道是否有人帮助我,我正在尝试连接到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)'.

但是我的数据库和我的项目在同一个文件夹中,就像我之前所做的那样,我不知道为什么我会收到这个错误。帮助

3 个答案:

答案 0 :(得分:2)

  • Control Panel - > Administrative Tools - > ODBC Data Sources - > Add - > Microsoft Access Driver(*mdb,*accdb)

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

参考 here

enter image description 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();
        }

    }

}

输出:

enter image description here

PS:请学习 JDBC JDBC-ODBC Bridge will be removed in JDK8 。请参阅 {{3 }}

编辑:

您还可以使用JDBC和 here 连接到MSAccess数据库。您需要在项目构建路径中使用以下jar。

  1. 公地琅2.6.jar
  2. 共享记录-1.1.1.jar
  3. 的hsqldb.jar
  4. jackcess-2.1.0.jar
  5. ucanaccess-2.0.9.5.jar
  6. 代码:

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

    与JDK8一起使用。您可以从 UCanAccess API 下载完整的源代码。

答案 1 :(得分:0)

当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();

答案 2 :(得分:0)

尝试使用此类的名称和连接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);