如何建立具有独立于任何IDE或上级文件夹结构的相对路径的JDBC数据库连接(SQLite)

问题描述 投票:0回答:1

我在 Mac 上使用 IntelliJ 在带有 SQLite 的 Maven 项目中工作,并且我已经使用绝对路径成功建立了与数据库的连接:

import java.sql.*;
Connection connection = null;
String url = "jdbc:sqlite:/Users/user/any/dir/java_project/database/data.db";
connection DriverManager.getConnection(url);

这在我的电脑上运行良好,但我希望数据库连接独立于任何 IDE 或上级文件夹结构,因为我在一个团队中工作,每个人都有不同的文件夹结构(当然)并且不使用相同的 IDE。

intern文件夹结构是这样的:(IntelliJ生成)

java_project
│  
│
├───src
│   │
│   └───main
│       └───java
│            └─Main.java
│  
│  
└───database
    └─data.db

我一直在尝试使用相对路径字符串连接主目录中的 SQLite 文件,例如:

url = "jdbc:sqlite:../../../database/data.db"

但只有绝对路径才有效。 我发现该线程:sqlite jdbc Eclipse 数据库相对路径

但是这个人搜索了 Eclipse 特定的解决方案。尽管如此,

String url="jdbc:sqlite:"+dbfile.getAbsolutePath()+"\\Demo.db";

看起来不错,但我不知道如何导入 data.db 文件以使用该方法引用它。

我发现的其他东西是:

connection = DriverManager.getConnection("jdbc:sqlite:"+$PROJECT_DIR$+"/database/data.db");

但是 IntelliJ 无法解析该符号,我没有付出太多努力来完成这项工作,因为我相信它是 IntelliJ 特定的,并且我想要一些不依赖于 IDE 的东西。

代码将来应该在服务器上运行,因此如果我们可以选择与相对路径建立连接,那么项目位于哪个上级文件夹中并不重要。

java sqlite jdbc
1个回答
0
投票

感谢 Mark Rotteveel 的善意评论,我找到了一个解决方案,它按照我想要的方式工作:

import java.sql.Connection;
Connection connection = DriverManager.getConnection("jdbc:sqlite:"+System.getProperty("user.dir")+"/database/data.db");

该语句可以位于文件层次结构中的任何位置,如问题所示。

© www.soinside.com 2019 - 2024. All rights reserved.