在用户计算机上的sqlite DB上使用jdbc设置相对路径

时间:2019-05-21 15:21:29

标签: java sqlite

我正在尝试为我的学校项目构建一个简单的Java应用程序,并且希望能够使用一个简单的数据库,以便在我的数据库中插入,更新,删除和询问查询。

我需要我的应用程序在安装时随处运行,因此我想使用与应用程序一起提供的本地数据库,并且可以从项目内部对其进行访问,而无需依赖于其他数据库

因此,我已经阅读了一点并找到了此SQLite教程-http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/

, 现在,我想为下载我的应用程序的用户设置相对路径,并在用户计算机上设置连接。我注意到它是写的:

connect to an in-memory database, you use the following connection string:
jdbc:sqLite::memory

这是我的代码:

public class Main {

    public static void main(String[] args) {
        try{
            Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Desktop\\School Project\\Software-Engineering---Java-Project\\data.db");
            Statement statement = conn.createStatement();

            //CREATE TABLES
            statement.execute("CREATE TABLE IF NOT EXISTS CUSTOMERS (name TEXT,phone INTEGER,email TEXT)");

            //INSERT TO TABLES
            statement.execute("INSERT INTO CUSTOMERS (name,phone,email)" +
                    "VALUES ('NETANEL', 05555555,'SADF@GMAIL')");

请注意,我的JDBC是到本地计算机的路径,如何更改它?

编辑

我仅通过引用数据库名称即可设置路径:

final static String DB_URI = "jdbc:sqlite" + ":data.db";

    public static void main(String[] args) {
        try{
            Connection conn = DriverManager.getConnection(DB_URI);
            Statement statement = conn.createStatement();

问题是,如果我将使用此数据库部署应用程序,它将是跨平台的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用用户主目录。您可以确定总是在定义程序的平台上进行定义,并且程序将对其具有读/写访问权限。

类似这样的东西:

String dbUri = "jdbc:sqlite:" + System.getProperty("user.home") + "/data.db";
Connection conn = DriverManager.getConnection(dbUri);