Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sqlite错误:当不应使用任何语句时,语句正在进行中_Java_Sqlite - Fatal编程技术网

Java Sqlite错误:当不应使用任何语句时,语句正在进行中

Java Sqlite错误:当不应使用任何语句时,语句正在进行中,java,sqlite,Java,Sqlite,我有这个问题已经有一段时间了,我不明白为什么会发生这种情况。在我的应用程序中,我经常与数据库交互,并根据正在发生的事情打开和关闭自动提交。但是,用户可以在任何时候使用数据库上的真空来帮助减少文件大小,除非出现错误 // org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (cannot VACUUM - SQL statements in progress) // The error above for

我有这个问题已经有一段时间了,我不明白为什么会发生这种情况。在我的应用程序中,我经常与数据库交互,并根据正在发生的事情打开和关闭自动提交。但是,用户可以在任何时候使用数据库上的真空来帮助减少文件大小,除非出现错误

// org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (cannot VACUUM - SQL statements in progress)
// The error above for this:
if(!con.getAutoCommit()) {
    con.commit();
    con.setAutoCommit(true);
}
s.execute("VACUUM"); // on this line
在启动时,从数据库中选择了几个项目(最多1到5行),我可以很好地进行真空吸尘。在我选择了连接多个表的几百行之后,我在尝试抽真空时遇到了这个错误。作为这些查询的示例:

// Inside a PreparedStatement
SELECT * FROM tableV 
LEFT JOIN (SELECT tableV.v_id, count(tableV.v_id) as c_count FROM tableV 
    LEFT JOIN tableC on tableV.v_id = tableC.v_id 
    GROUP BY tableV.v_id 
    ORDER BY c_count DESC) AS cc ON cc.v_id = tableV.v_id 
LEFT JOIN tableP ON tableP.c_id = tableV.c_id 
WHERE tableV.v_id IN ( 
    SELECT v_id FROM tableVG 
    LEFT JOIN tableGiG ON tableVG.gi_id = tableGiG.gi_id 
    LEFT JOIN tableG ON tableG.g_id = tableGiG.g_id 
    WHERE g_name = ?) 
ORDER BY tableV.publish_date DESC

// Inside a PreparedStatement
SELECT * FROM gitem_list 
LEFT JOIN tableGi ON tableGi.type_id = gitem_list.type_id 
LEFT JOIN tableGiG ON tableGiG.gi_id = gitem_list.gi_id 
LEFT JOIN tableG ON tableG.g_id = tableGiG.g_id 
WHERE g_name = ?

我尝试在查询后关闭PreparedStatement和ResultSet,但没有任何影响。查询完成了,应用程序中的所有内容都加载良好,为什么它说语句仍在发生?我不会更改连接或语句。

“语句进行中”表示某些
PreparedStatement
ResultSet
未关闭。谢谢,我没有意识到这一点。我向每个包含这两个语句的方法添加了close语句,它正常工作。“语句进行中”意味着一些
PreparedStatement
ResultSet
未关闭。谢谢,我没有意识到这一点。我在每一个有这两个方法的方法中添加了close语句,并且它正在像它应该的那样工作。