我有一个sqlite4java程序,可以在我的主要方法中像这样连接和运行SQLite数据库上的语句:
public static void main(String[] args) throws SQLiteException {
getPredictions();
}
private static void getPredictions() throws SQLiteException {
int passValue = 408;
SQLiteConnection db = new SQLiteConnection(new File("D:\\sqlite\\CW.db"));
db.open(true);
SQLiteStatement statement = db.prepare("SELECT * FROM user_based_sim WHERE user1 = ? OR user2 = ?;");
try {
statement.bind(1,passValue);
statement.bind(2,passValue);
while (statement.step()) {
System.out.println(statement.columnInt(0));
}
} finally {
statement.dispose();
}
db.dispose();
}
} 该语句将输出正确的值,但该程序不会结束,例如,直到我手动关闭它为止,它仍然像这样:
在我看来,while循环不会停止,不知道为什么。我会严格按照文档进行操作。
答案 0 :(得分:0)
我认为那里可能正在发生其他事情,一些其他线程开始运行并且永远不会终止。为了确保这一点,我运行了与您发布的代码相同的代码,并且终止了。或者,可能是数据库文件出了点问题,SQLite只是在打印出第一个结果后才继续对其进行扫描。
要弄清楚发生了什么,请在IDEA中运行程序,并在程序挂起时使用IDEA中的“转储线程”操作(类似相机的图标)。如果仍然不能立即解决问题,请在此处发布线程转储。
希望这会有所帮助! 伊戈尔(Igor)