如何获取数据库的realative路径?
我正在开发一个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 \\
有帮助吗?
您尝试的方式没有错,但它只适用于您的计算机,因此,解决方案很简单,将.sqlite
文件放在src
,也许您想创建一个名为Database
的包,它不是必需的,但它更好。
如果.sqlite
文件在源内部将是这样的:
src/shreesai.sqlite
....=DriverManager.getConnection("jdbc:sqlite:src/shreesai.sqlite");
不要使用绝对路径,并且因为不同的窗口平台而避免使用目录( \\
)的反斜杠,而是使用斜杠( /
)。