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

6ovsh4lw  于 11个月前  发布在  SQLite
关注(0)|答案(1)|浏览(113)

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

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


我一直在尝试使用相对路径String连接Main中的SQLite文件,如下所示:

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


但只有绝对路径才有效。我找到了这个线程:sqlite jdbc Eclipse database relative path
但是这个人搜索了一个Eclipse特定的解决方案。

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


看起来不错,但是我不知道,我如何导入data.db文件来用方法引用它。
我还发现:

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


但是IntelliJ不能解析这个符号,我没有花太多的精力来做这个工作,因为我相信它是特定于IntelliJ的,我想要一些不依赖于IDE的东西。
代码将来应该在服务器上运行,所以如果我们有一个选项来建立与相对路径的连接,那么项目在哪个上级文件夹中并不重要,那就太好了。

bkkx9g8r

bkkx9g8r1#

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

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

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

相关问题