gpt4 book ai didi

java - UCanAccess Access 数据库文件的相对路径

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:37 24 4
gpt4 key购买 nike

我为自己编写了一个简单的程序,它使用 Access 数据库文件。我使用绝对路径连接到数据库:

String path = "jdbc:ucanaccess://D:/Development/20_Eclipse/Budget/data/Budget.accdb";
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
this.conn = DriverManager.getConnection(path);

当我在其他地方使用可运行的 jar 时,这条路径(可以理解)不起作用。所以我尝试了相对路径,但它们也没有用。

然后我尝试使用

构建路径
String path = "jdbc:ucanaccess://" + helper.programmPathForDB() + "/data/Budget.accdb";

helper.programPathForDB() 这样做的地方:

public String programmPathForDB()
{
String tempPath = this.getClass().getResource( "." ).toString();
String path = tempPath.substring(6, (tempPath.length()-12));

return path;
}

这仅在我通过我的 IDE (Eclipse) 启动程序时有效。当我在其他地方启动 jar 时,它不起作用。

我该如何解决这个问题?

最佳答案

听起来您希望将数据库文件放在相对于 JAR 文件位置(例如,子文件夹)的文件夹中。如果是这样,那么

Get location of JAR file

提供了一些关于如何确定 JAR 文件位置的建议。

但是,您应该记住,将数据库文件放在那里可能不是一个好主意。根据应用程序的部署方式,此类位置可能会拒绝没有提升权限的用户进行写访问(例如,Windows 下的 %ProgramFiles%)。此外,移动 JAR 文件而不移动数据库文件可能会破坏您的应用程序。

所有现代操作系统都提供众所周知且可发现的位置,应用程序可以在其中安全地放置不是(可执行)应用程序本身不可分割的一部分的“内容”。例如,Windows 为用户特定位置提供 %APPDATA%%LOCALAPPDATA%,为需要的资源提供 %PUBLIC%在所有用户之间共享。您应该考虑将这些位置之一(的子文件夹)用于您的数据库文件。

关于java - UCanAccess Access 数据库文件的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com