gpt4 book ai didi

java - 在迭代游标时从 Android SQLite 数据库中删除行是否安全

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:17 28 4
gpt4 key购买 nike

例如:

public void removeStaleMovies(Set<String> updatedMovieList) {
Cursor cur = this.getReadableDatabase().rawQuery("SELECT id, title, year FROM movie", null);
cur.moveToFirst();
while (!cur.isAfterLast()) {
String title = cur.getString(1);
String year = cur.getString(2);
if (!updatedMovieList.contains(title + "-" + year)) {
// delete the row where 'id' = cur.getString(0)
// OR, delete the row using the object at the cursor's current position, if that's possible
// OR, if deletion isn't safe while iterating, build up a list of row id's and run a DELETE statement after iteration is finished
}

}
}

删除安全吗?或者它会导致一些不可预知的行为吗?我知道 this similar question , 但我仍然不确定。

最佳答案

从代码安全的角度来看,这应该没问题,假设您的查询结果集小于 1MB。在这种情况下,游标 将整个结果集保存在堆空间中,因此它不受对基础数据库的任何更改的影响。

话虽这么说,您可能想要建立一个要删除的行的列表,这样您就可以在单个语句中删除它们,而不是一堆单独的语句(尽管将这些单独的语句包装在事务中可能会让您相似的性能特征)。

关于java - 在迭代游标时从 Android SQLite 数据库中删除行是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953549/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com