具有Java相对路径的MS-Access数据库
我有以下代码具有Java相对路径的MS-Access数据库,java,ms-access-2007,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"); 上述代码的问题是应用程序将不可移植。所以我所做的是 我将数据库文件复制到项目文件夹中 我试图将getConnection
Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ= D:\\work folder\\netzeus\\Project - Optimo (Phase 1)\\DB\\DonorsDetail.mdb");
上述代码的问题是应用程序将不可移植。所以我所做的是
getConnection
中的路径更改为
连接conn=DriverManager.getConnection(“jdbc:odbc:Driver={Microsoft Access驱动程序(*.mdb)};DBQ=DonorsDetail.mdb”)不幸的是,这不起作用。有没有办法设置相对路径?我该怎么做呢?每当我想连接到数据库时,我都会这样做:
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+";";
请参见一种可能的解决方案是使用
文件
生成绝对路径字符串
,例如
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
是相对于应用程序执行上下文(即工作目录)我认为路径不能是相对的,因为我认为它是相对于驱动程序而不是应用程序的。最好是使用File#getAbsolutePath(或类似)并使用结果字符串,而不是使用@MadProgrammer复制,将db文件放入构建文件夹是否安全?然后路径将基于工作目录这基本上就是OP现在正在做的事情,并且想要做的事情avoid@MadProgrammer但我认为使用这段代码,他的第一个问题“应用程序将无法移植”得到了解决。如何解决dbFileName
是一个绝对路径,它不是portable@MadProgrammer正确的。但如果我们将路径从“D:/work folder/netzeus/Project-Optimo(Phase 1)/DB/DonorsDetail.mdb”更改为“C:/DonorsDetail.mdb”,那么就可以了。因为C:/是所有人的共同点。仍然没有便携设备,那么Mac和基于Linux的操作系统呢?那些愚蠢的人(像我一样)把他们的应用程序放在C以外的其他驱动器上呢?以这种方式硬编码值不是一个可行的解决方案…希望使用类似的机制,感谢您正确显示它。