每次重用SQLite连接或重新连接?

时间:2015-07-06 13:48:30

标签: java windows sqlite

我正在制作一个使用SQLite数据库存储产品信息的Java应用程序。为了获取信息,我使用静态方法和静态变量private static Connection c创建了一个类,以便它在程序结束前保持活动状态。

public static void Init() {
    try {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("jdbc:sqlite:test.db");
        crearTablas();
    } catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    System.out.println("Opened database successfully");
}

执行多个查询。我应该在每个查询结束时关闭数据库连接,还是保持活动并重用(当我停止使用静态方法使用程序时关闭)?

该应用程序适用于Windows系统(计算机商店的库存控制),而不适用于手机。

3 个答案:

答案 0 :(得分:2)

SQLite的最佳实践是在程序的生命周期内保持单个连接。关闭和打开连接将不会节省太多内存,因为SQLite不会保留很多状态(唯一重要的内存使用是页面缓存,您可以配置其大小),以及这些操作的时间(例如重新读取数据库结构) )比将要使用的内存更糟糕。

对于并发性,具有多个打开的连接(来自单个进程或来自多个进程)没有问题,因为数据库仅在事务处于活动状态时才被锁定。

答案 1 :(得分:1)

或者使用Content provider,从不担心打开和关闭数据库,它会自己处理它。 - Reference

(尽管人们普遍认为只有在您希望跨应用程序共享数据时才能使用内容提供商,但如果您仅使用它来访问本地数据,则非常有用。)< / p>

Check this discussion here

答案 2 :(得分:0)

SQLite的最佳实践是在每个函数后关闭连接,并为函数打开一次。通过关闭和打开连接,您将节省内存,并且这些操作的时间不如将要使用的内存重要。

您可以参考this文章了解SQLite的最佳做法。