是否通过删除查询修改了Android select查询游标?

时间:2012-12-03 22:25:17

标签: android sqlite android-sqlite

我试图找到一种方法来在删除某些行时通知依赖组件,那么我可以发出一个select查询,获取光标,然后发出删除或修改原始游标吗?有没有更好的方法?这就是我所说的:

Cursor c = builder.query(db, projection, selection, selectionArgs, groupBy, having, sortOrder);
db.delete(table, selection, selectionArgs);
while (cursor != null && cursor.moveToNext()) {
    final String name = cursor.getString(0);
    // send notifications
}
c.close();

2 个答案:

答案 0 :(得分:2)

游标是与数据库分离的数据结构。也就是说,通过任何方式修改数据库都不会影响已经获取的游标。

<强>更新

这似乎是错的!对不起!

请参阅评论以获取详细信息。感谢@Selvin。

答案 1 :(得分:1)

如果您使用内容提供商访问您的数据库,那么您可以使用专为此目的而设计的ContentObservers

当您通过内容提供程序检索数据时,您使用URI执行此操作,您可以使用此URI通知ContentObserver,指示游标已更改:

getContentResolver ().notifyChange (URI, null)

有关详细信息,请参阅javadocs for notifyChange(...)

如果您不使用内容提供商访问您的数据,我不得不说您必须为此编写自己的解决方案。