4
我知道一个数据库关闭后,光标变为“无效”,这是否也同时关闭了光标?这是否避免了必须做下面显示的内容?明确地关闭SQLite数据库中的游标,需要还是不需要?
例如1
public void String getResultsAndReturnString() {
String result = "";
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = qb.query(db, projection, null, null,
null, null, null);
cursor.close(); <-- explicit cursor close example one
db.close();
return result;
}
例如2
public void Cursor getResultsAndReturnCursor(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = qb.query(db, projection, null, null,
null, null, null);
return cursor;
}
public void closeOut(Cursor cursor, SQLiteDatabase dataBase){
cursor.close(); <-- explicit cursor close example two
dataBase.close();
}
游标如何映射到系统资源?什么是db实例本身呢?我相信db是映射的os资源,但不能确定游标。关闭游标试图关闭底层数据库(可能会或可能不会成功),那么这里的逻辑是什么?有任何想法吗? – zgulser
@zgulser我认为关于“[c]丢失游标尝试关闭底层数据库”的断言是不正确的。游标是数据库的一组离散结果,而不是数据库本身。因此,关闭游标对数据库没有影响。 – MarsAtomic
嗨,这就是我在堆栈跟踪中看到的原因。尽管如此,它并不一定会关闭 - 它只是试图按照我的理解关闭它。此外,总是建议在关闭db之前进行空检查,我怀疑这个断言可能是原因。 – zgulser