java如何获取数据库的实际路径?
我正在开发一个jframe,使用textfields和all在数据库中存储一些数据。我有以下数据库连接代码。我正在使用sqlite数据库
**Connectdatabase.java**
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package shreesai;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
* @author DeepRocks
*/
public class Connectdatabase {
Connection con = null;
public static Connection ConnecrDb(){
try{
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:G:\\Development\\Project\\database\\shreesai.sqlite");
return con;
}
catch(ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"Problem with connection of database");
return null;
}
}
}****
/*这一切都很好,但我想知道的是,如果我将这个项目导出到JAR,那么我的客户机将从不同的路径运行JAR*/强>
我试过使用这个代码
public class Connectdatabase {
Connection con = null;
public static Connection ConnecrDb(){
try{
String dir = System.getProperty("user.dir");
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:"+dir+"shreesai.sqlite");
return con;
}
catch(ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"Problem with connection of database");
return null;
}
}
}
就连我也试过这个:
public class Connectdatabase {
Connection con = null;
public static Connection ConnecrDb(){
try{
String dir = System.getProperty("user.dir");
String maindir = dir + File.separator + File.separator ;
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:"+maindir+"shreesai.sqlite");
return con;
}
catch(ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"Problem with connection of database");
return null;
}
}
}
但是什么都没有我认为双反斜杠导致dir返回肯定有问题:G:\Development\Project\database。我们需要G:\\Development\\Project\\database\\
有什么帮助吗
# 1 楼答案
您尝试的方法没有错,但它只在您的计算机上是正确的,因此,解决方案很简单,将
.sqlite
文件放入src
中,也许您想要创建一个名为Database
的包,这不是必需的,但更好如果
.sqlite
文件在源代码中,则如下所示:src/shreesai.sqlite
....=DriverManager.getConnection("jdbc:sqlite:src/shreesai.sqlite");
不要使用绝对路径,避免对目录(
\\
)使用反斜杠,因为不同的窗口平台,请改用斜杠(/
)