提问人:koyashiba 提问时间:11/10/2023 最后编辑:Mark Rotteveelkoyashiba 更新时间:11/16/2023 访问量:38
如何建立JDBC数据库连接(SQLite),其相对路径独立于任何IDE或高级文件夹结构
How do establish an JDBC database connection (SQLite) with a relative path independent from any IDE or superior folder structure
问:
我在带有 IntelliJ 的 Mac 上使用 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);
这在我的 PC 上工作正常,但我希望数据库连接独立于任何 IDE 或上级文件夹结构,因为我在一个团队中工作,每个人都有不同的文件夹结构(当然)并且不使用相同的 IDE。
intern 文件夹结构是这样的:(IntelliJ 生成)
java_project
│
│
├───src
│ │
│ └───main
│ └───java
│ └─Main.java
│
│
└───database
└─data.db
我一直在尝试将 Main 中的 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 的东西。
代码将来应该在服务器上运行,所以如果我们可以选择与相对路径建立连接,那就太好了,这样项目在哪个上级文件夹中就无关紧要了。
答:
0赞
koyashiba
11/16/2023
#1
感谢 Mark Rotteveel 的友好评论,我找到了一个解决方案,它按照我的意愿工作:
import java.sql.Connection;
Connection connection = DriverManager.getConnection("jdbc:sqlite:"+System.getProperty("user.dir")+"/database/data.db");
该语句可以位于文件层次结构中的任何位置,如问题中所示。
评论