访问保存在类路径中的 Microsoft Access 数据库

Accessing a Microsoft Access database that is saved in the classpath

我正在尝试访问存储在类路径中的数据库。我已经安装了 ucanaccess 3.0.0 和所有必需的 .jars。

我的项目层次结构:

:

这是我目前的代码:

public void login()
{

    Connection conn;
    try {


        conn = DriverManager.getConnection("jdbc:ucanaccess:/database/theDB.accdb");

    Statement s = conn.createStatement();
    ResultSet rs = s.executeQuery("SELECT Student_Number FROM User");


    while (rs.next()) {

        System.out.println(rs.getString(1));
    }



    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

这是一个简单的登录屏幕,我只是在单击按钮时测试与数据库的连接。我知道引用绝对文件路径不好,所以我认为将文件放在类路径中会更好。

我遇到错误

No suitable driver found for jdbc:ucanaccess:file:/C:/Users/Gandalf/workspace/FubbleApp/bin/database/theDB.accdb

所以我认为它一定是“/database/theDB.accdb”,但我不确定如何解决这个问题。

感谢任何帮助。提前致谢

您在连接中提供的数据库文件(.accdb 或 .mdb)的路径 URL 必须是

  • 绝对路径,或

  • 当您的应用程序为 运行 时有效的当前工作目录的相对路径,在您的情况下似乎是 "C:/Users/Gandalf/workspace/FubbleApp/bin/".

如果您希望您的应用程序自动在 CLASSPATH 中搜索数据库文件,您需要提供自己的代码来执行此操作,或者包括一些第三方代码来为您执行搜索。

我认为 accdb 必须在 jar 文件之外。我这么说是因为 jdbc 是一个协议,你必须能够在数据库中写入并在存档内的数据库中写入你必须再次取消存档并存档数据库。我不认为你可以轻松做到...解决方案是...相对于 jar 或绝对路径。 (在与 jar 文件相同的文件夹中)