SQLite:数据库关闭时是否必须关闭光标?

时间:2017-04-28 08:24:06

标签: java sqlite cursor

我有一个打开的数据库,读出一些数据。完成读取操作后,我关闭数据库但不关闭光标。

我是否也需要关闭光标? 我假设它将在数据库结束时完成,但这是真的吗? 如果我不关闭光标会发生什么?

SQLiteDatabase db = ...;
Cursor c = database.rawQuery("SELECT * FROM foo");
//read some values using the Cursor

c.close(); //<- is this required?
db.close();

2 个答案:

答案 0 :(得分:0)

documentation说:

  

完成迭代结果后,请在光标上调用close()以释放其资源。

如果您不关闭光标,可以稍后get an exception

答案 1 :(得分:0)

如果您关闭数据库,据我所知,相应的游标也将关闭。

关闭对应的SQLite数据库后,尝试通过游标(通过cursor.moveToNext())游标时引发的异常示例如下:

  

java.lang.IllegalStateException:无法执行此操作,因为   连接池已关闭。