Luk*_*kap 1 sqlite android database-connection
是否可以选择在sqlite中的某个时间点查看所有打开的游标?我知道在.Net上有一些功能可以执行此操作(查看与数据库的所有连接...)
但是我可以用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;
}
}
Run Code Online (Sandbox Code Playgroud)
您需要将自己的工厂提供给DB,以便TrackingCursor创建SQLiteCursors 而不是plain .
public class TrackingCursorFactory implements SQLiteDatabase.CursorFactory {
Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) {
return new TrackingCursor(db, masterQuery, editTable, query);
}
}
Run Code Online (Sandbox Code Playgroud)
最后通过在调用时将工厂作为参数传递来告诉DB使用此工厂openDatabase.
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |