Java 重复使用SQLite连接还是每次重新连接?

Java 重复使用SQLite连接还是每次重新连接?,java,windows,sqlite,Java,Windows,Sqlite,我正在制作一个Java应用程序,它使用SQLite数据库来存储产品信息。为了获取信息,我用静态方法创建了一个类,并创建了一个静态变量private static Connection c,以便在程序结束之前保持活动状态 public static void Init() { try { Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("jdbc:sqlite:test.db

我正在制作一个Java应用程序,它使用SQLite数据库来存储产品信息。为了获取信息,我用静态方法创建了一个类,并创建了一个静态变量
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系统(电脑商店的库存控制),不适用于手机。

SQLite的最佳做法是在每个功能完成后关闭连接,然后为某个功能打开一次连接。通过关闭和打开连接,您将节省内存,并且这些操作的时间不如将要使用的内存重要

关于SQLite的最佳实践,您可以参考文章。

或使用,不要担心打开和关闭数据库,它会自己处理。-

(尽管人们普遍认为,只有当您希望在应用程序之间共享数据时,才应该使用内容提供商,但如果您仅将其用于访问本地数据,这是非常有益的。)


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


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

如果你制作一个windows应用程序,我想你不必太担心内存问题,因此,最好保持连接始终打开。“最佳实践”是胡说八道。这个问答很好地说明了这一点,其中两个答案声称截然相反的方法是“最佳实践”。看,“最佳实践”是胡说八道。这个问答很好地说明了这一点,其中两个答案声称截然相反的方法是“最佳实践”。看看有没有像MySQL一样的“重新连接”选项?这种情况下,长时间运行的应用程序可能会暂时断开连接,因为sqlite暂时不可用(服务重启、备份或来自操作系统级别的任何其他操作)。那么,你们如何处理这些案件呢?也许最好不要相信连接会一直存在,只需在需要时连接,然后断开连接即可。@papajony SQLite不是作为服务运行的,而是基于文件的;没有网络连接。@谢谢。既然是这样,那么我认为保持联系开放的理由似乎很弱。我特别谈论的是程序“永远”运行的嵌入式系统。只有在需要时才打开连接,然后再关闭。保持连接“永远”开放没有真正的好处。