【问题标题】:SQLite Database file lockedSQLite 数据库文件被锁定
【发布时间】:2019-02-05 16:09:31
【问题描述】:

我在 Apache Tomcat 服务器上使用 servlet 通过 JDBC 向数据库写入和读取数据。收到的所有信息都是正确的,但是在第一次读/写数据库之后,数据库文件被锁定。这是一个代码sn-p:

        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection(path);
        conn.setAutoCommit(false);
        Statement stat = conn.createStatement();
        String req = "select * from login where username=\""+username+"\" and password=\""+password+"\"";
        System.out.println(req);
        ResultSet rs2 = stat.executeQuery(req);
        conn.setAutoCommit(true);
        System.out.println(rs2.getString("rights"));
        int rights = Integer.parseInt(rs2.getString("rights"));
        rs2.close();
        stat.close();
        conn.close();

如果我关闭连接,数据库文件将被锁定并保持访问和锁定状态。

【问题讨论】:

  • stackoverflow.com/q/8511901/266374 的可能副本编辑:哎呀,那是 C#。但也许它仍然是 Java 中的 GC 问题?
  • 你为什么在查询前设置conn.setAutoCommit(false);,在查询后设置conn.setAutoCommit(true);
  • 我已经阅读了一些关于此的说明,其中大多数都是这样完成的。
  • 如果我删除这两个命令,它也不起作用。
  • 在 Web 应用程序中使用 sqlite 是个坏主意;它并不真正支持多个连接(或者至少 AFAIK,JDBC 使用不支持该功能并且需要独占访问权限才能写入的变体)。使用“真实”数据库。

标签: java sqlite servlets jdbc


【解决方案1】:

我找到了解决方案,或者我的错误:我将 .war 文件导出到了错误的目录。感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2015-05-11
    • 2011-02-14
    相关资源
    最近更新 更多