0

我想问一下如何在 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"** );

我想提供一个相对路径,以便我的项目可以在任何具有此 \project\a.mdb 的驱动器上运行

4

3 回答 3

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
于 2013-04-14T12:10:41.393 回答
0

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

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

于 2013-04-14T12:09:26.177 回答
0

AFAIK,如果您省略路径名的驱动器名称部分,Windows 应用程序将在“当前”驱动器上查找。

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

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


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

于 2013-04-14T12:12:55.373 回答