我正在使用以下脚本连接到 Java 中的本地 SQLite 数据库:
public static Connection createOrOpenDatabase(String database) {
String url = "jdbc:sqlite:" + database;
try {
Connection conn = DriverManager.getConnection(url);
return conn;
} catch (SQLException e) {
System.out.println(e.getMessage());
return null;
}
}
所以这效果非常好,并将其保存在同一目录中,
jar
也位于该目录中。现在是我的问题,如何设置数据库所在的绝对路径。
例如
db
文件的当前位置是:
C:\MyProjects\JavaFXProject\app\dist\main.db
现在我想将此文件保存到 user.home 目录中:
C:\Users\Julian\MyProjects\JavaFXProject\main.db
我怎样才能实现这个目标?
如何设置[n]个绝对路径
您可以将其作为连接 URL 的一部分,例如
jdbc:sqlite:C:/Users/Julian/MyProjects/JavaFXProject/main.db
OP 要求
user.home
的绝对路径,这是相对路径。
因此,我添加了独立于操作系统的答案来访问 user.home
路径,因为其他答案仅涵盖硬编码路径或 jar 的子目录。
...如何设置数据库所在的绝对路径。
和
现在我想将此文件保存到 user.home 目录中:
C:\Users\Julian\MyProjects\JavaFXProject\main.db
我怎样才能实现这个目标?
要获取当前活动用户主目录的相对路径,我们需要询问 Java 两个信息,然后将它们组合成正确的路径:
String userHome = System.getProperty("user.home");
char separator = File.separatorChar;
String url;
String url = "jdbc:sqlite:" + userHome + separator + "MyProjects" +separator + "JavaFXProject" + separator + "main.db"
现在 url 指向 user.home 内给定的子目录(无论 Windows / Linux)。