我想问一下如何在java中为数据库(ms访问)提供相对路径,这样当我将项目放在其他驱动器中时,我就不必编辑路径部分了。
以下是数据库的绝对路径:
con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};**DBQ=c:\\project\\a.mdb"** );
但如果我将我的项目更改为另一个文件夹,请假设d:然后我必须编辑此路径部分,如下所示:
con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=**d:\\project\\a.mdb"** );
我想给出一个相对路径,以便我的项目可以在任何驱动器上运行 \项目\ a.mdb
答案 0 :(得分:1)
嗯,这就是我们所说的参数化!只需将路径作为参数,并在运行时传递它。这是一个演示:
public class DBOperation {
public static void main(String[] args) {
String path=args[0];
String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};**DBQ="+path+"**)";
...
}
}
通过以下方式运行程序:
java DBOperation c:\project\a.mdb
答案 1 :(得分:0)
我不知道你在使用路径时使用的驱动程序有多灵活(从未使用过该驱动程序)。但解决这个问题的一种方法是允许路径可配置,作为启动命令行参数,或作为env变量或系统属性。
您还可以确保数据库位于类路径中,并使用getResource
找到它的位置,这将为您提供数据库的URL。然后可以使用它将其转换为文件路径。
答案 2 :(得分:0)
AFAIK,如果您取消路径名的驱动器名称部分,Windows应用程序将查看“当前”驱动器。
因此,请尝试将您使用的路径名从"d:\\project\\a.mdb"
更改为"\\project\\a.mdb"
。
但请注意,这意味着您需要在启动应用程序之前设置当前驱动器;例如在命令提示符下键入D:
或C:
。
更好的选择是使数据库路径成为命令行参数或属性文件中的条目。