有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您尝试的方法没有错,但它只在您的计算机上是正确的,因此,解决方案很简单,将.sqlite文件放入src中,也许您想要创建一个名为Database的包,这不是必需的,但更好

    如果.sqlite文件在源代码中,则如下所示:

    src/shreesai.sqlite

    ....=DriverManager.getConnection("jdbc:sqlite:src/shreesai.sqlite");

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