我正在Android中创建一个程序,在我计划迭代的其中一个屏幕上考虑数据库中的行,向用户显示每一行并让他跳过或删除它。
在Java中,我可以使用 ResultSet 的 deleteRow ()方法,但是android目前没有等效的方法。或者事件是一种设置带有删除标记的列的方法。
通过 SQLiteDatabase delete或executeSql方法进行删除是否会使当前打开的游标保持有效并从中删除已删除的行?
如果它变得无效,那么建议不必继续重新查询数据库(或者至少每次都不重新编译语句)?
如果光标仍然有效但未更新,那么确保用户无法返回此行是最好的方法吗?
这个问题有更好的解决方案吗?
答案 0 :(得分:1)
只需构建要删除的商品ID列表。用户操作完成后,您可以一步完成删除所有操作。
答案 1 :(得分:0)
您可以使用MatrixCursor执行此操作:
newCursor = new MatrixCursor(new String[] {col1, col2, col3}); // col names
mCursor.moveToPosition(-1); // your Cursor
while (mCursor.moveToNext()) {
if (<any condition>) {
newCursor.addRow(indicationNames.rows(mCursor));
}
}
mCursor = newCursor ;
通过这种方式,您可以更新游标而不会影响数据库。