SQLite - 包含没有完整路径的数据库(getResource())

时间:2017-05-12 10:23:47

标签: java sqlite

我在名为database.sqlite的 project / src / main / resources / database 文件夹中有一个SQLite数据库。

如何在不添加getResource()方法的完整路径的情况下正确添加连接(DriverManager.getConnection())?现在它看起来像:

public static Connection Connector() {
    try {
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:../project/src/main/resources/database/database.sqlite");
        return conn;
    }
    catch (ClassNotFoundException | SQLException e){
        Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, e);
    }
    return null;

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

很抱歉这样说,但你的方法完全错了。

在类路径中放置一些资源文件,如图像,只读属性文件等,这是可以的。这些可以简单地由InputStream获得getResourceAsStream()读取,即使它们最终在JAR中持续。

但是SQLite数据库文件具有驱动程序需要随机访问的内部结构(如Java中的RandamAccessFile)。此外,您可能也想写信给它。如果数据库文件包含在JAR中,则无法做到这一点。

因此,您应该将数据库文件直接放在文件系统中的某个位置。