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