如何在Java中为数据库提供相对路径

如何在Java中为数据库提供相对路径,java,database,jdbc,path,relative-path,Java,Database,Jdbc,Path,Relative Path,我想问一下如何在java中为数据库(ms access)提供一个相对路径,这样当我将项目放入其他驱动器时,就不必编辑路径部分 下面给出了数据库的绝对路径: con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};**DBQ=c:\\project\\a.mdb"** ); 但如果我将项目更改为另一个文件夹,假设d:那么我必须像这样编辑此路径部分: con=DriverManager

我想问一下如何在java中为数据库(ms access)提供一个相对路径,这样当我将项目放入其他驱动器时,就不必编辑路径部分

下面给出了数据库的绝对路径:

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"** );
我想给一个相对路径,以便我的项目将运行在任何驱动器与此
\project\a.mdb

我不知道您使用的驱动程序在使用路径时有多灵活(从未使用过该驱动程序)。但解决此问题的一种方法是允许路径可配置,可以作为启动命令行参数,也可以作为环境变量或系统属性


您还可以确保数据库位于类路径中,并通过使用
getResource
找到它的位置,这将为您提供数据库的URL。然后可以将其转换为文件路径。

这就是我们所说的参数化!只需将路径设置为参数,并在运行时将其传递。下面是一个演示:

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

好的,如果您在路径名中不使用驱动器名部分,Windows应用程序将在“当前”驱动器上查看

因此,请尝试将您正在使用的路径名从
“d:\\project\\a.mdb”
更改为
“\\project\\a.mdb”

但是请注意,这意味着您需要在启动应用程序之前设置当前驱动器;e、 g.在命令提示下键入
D:
C:



更好的选择是将数据库路径设置为命令行参数或属性文件中的条目或其他内容。

实际上,我正在处理一个基于gui的项目,我不希望用户手动输入路径,我需要一些自动路径设置,如相对路径,另一个想法是,您可以将路径放在配置文件中,然后解释配置以获得路径。在windows系统中,我认为在跨越分区时不可能使用相对路径