具有Java相对路径的MS Access数据库

时间:2014-01-27 07:21:12

标签: java ms-access-2007

我有以下代码

Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ= D:\\work folder\\netzeus\\Project - Optimo (Phase 1)\\DB\\DonorsDetail.mdb");

上述代码的问题是应用程序不可移植。所以我做的是

  1. 我将数据库文件复制到项目文件夹
  2. 我尝试将getConnection中的路径更改为

    Connection conn = DriverManager.getConnection(“jdbc:odbc:Driver = {Microsoft Access Driver(* .mdb)}; DBQ = DonorsDetail.mdb”);

  3. 不幸的是,这没有用。有没有办法设置相对路径?我该怎么做?

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案是使用File生成绝对路径String,例如......

File dbFile = new File("DonorsDetail.mdb");
String path = dbFile.getAbsolutePath();
Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ= " + path);

这将假设DonorsDetail.mdb相对于应用程序执行上下文(即工作目录)

答案 1 :(得分:0)

每当我想连接数据库时,我就会这样做:

String dbFileName = "D:/work folder/netzeus/Project - Optimo (Phase 1)/DB/DonorsDetail.mdb";//Using your database path
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};"+
        "DBQ="+dbFileName+";";
Connection conn=DriverManager.getConnection(url);

试试这个。如果您收到错误,请检查您的拼写和文件夹名称。

修改

如果您想要便携式,您可以将数据库放入C:/。只需加密您的数据库文件并硬编码密码即可打开数据库文件,如:

String dbFileName = "C:/DonorsDetail.mdb";
String password = "your_password";
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};"+
    "DBQ="+dbFileName+";"+
    "Pwd="+password+";";

请参阅how to encrypt database