【发布时间】:2017-12-10 04:36:44
【问题描述】:
在读取 sqlite 方法以使用 cursor 读取行时,我了解到在从游标中检索数据后,我们应该关闭游标以避免任何内存泄漏,但在这里我怀疑在关闭游标后调用cursor.getCount() 下面的代码?关闭游标后检索数据是不是错了?
谁能解开这个疑惑!
提前致谢!!
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
【问题讨论】:
-
这对我来说看起来不对,但无论如何你为什么不在关闭光标之前拨打
getCount电话? -
我是从一个知名网站上读到的代码,所以我认为应该是正确的?
-
我不敢相信我们需要关闭游标来获取行数。这个知名网站是什么?我在 SO 上看到的所有示例都在关闭游标之前获取行数。
-
计数后为什么不关闭光标?
-
如果使用
try/finally,可以关闭return后面的光标。无论如何,要计算行数,您应该改用queryNumEntries()。