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
使用此工厂。