如何获取数据库的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");

不要使用绝对路径,并且因为不同的窗口平台而避免使用目录( \\ )的反斜杠,而是使用斜杠( / )。