我正在开发一个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 \\
任何帮助?
答案 0 :(得分:3)
你尝试的方式没错,但它只适用于你的计算机,因此,解决方案很简单,将.sqlite
文件放在src
内,也许你想创建一个包名为Database
,它不是必需的,但它更好。
如果.sqlite
文件位于源代码内,则为:
src/shreesai.sqlite
....=DriverManager.getConnection("jdbc:sqlite:src/shreesai.sqlite");
由于窗口平台不同,不要使用绝对路径,并避免在目录(\\
)中使用反斜杠,而是使用斜杠(/
)。