1
有沒有在sqlite中的某個時間點看到所有打開的遊標的選項? 我知道有一些函數可以在.Net上執行此操作(查看與數據庫的所有連接...)如何在sqlite中打印打開的遊標列表?
但是,我可以用sqlite做什麼?
有沒有在sqlite中的某個時間點看到所有打開的遊標的選項? 我知道有一些函數可以在.Net上執行此操作(查看與數據庫的所有連接...)如何在sqlite中打印打開的遊標列表?
但是,我可以用sqlite做什麼?
我不認爲有直接獲取這些信息的方法。但是,您可以執行的操作是創建您自己的子類Cursor
,該子類在靜態列表中跟蹤當前打開的Cursor
。
例如(僞代碼,未測試):
public class TrackingCursor extends SQLiteCursor {
private static List<Cursor> openCursors = new LinkedList<Cursor>();
public TrackingCursor(SQLiteDatabase db, SQLiteCursorDriver driver,
String editTable, SQLiteQuery query) {
super(db, driver, editTable, query);
openCursors.add(this);
}
public void close() {
openCursors.remove(this);
}
public static List<Cursor> getOpenCursors() {
return openCursors;
}
}
您需要提供自己的工廠到數據庫,讓你的TrackingCursor
旨意創造的,而不是簡單的SQLiteCursor
秒。
public class TrackingCursorFactory implements SQLiteDatabase.CursorFactory {
Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) {
return new TrackingCursor(db, masterQuery, editTable, query);
}
}
最後告訴DB通過將工廠作爲參數,當你調用openDatabase
使用此工廠。