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

java– 迭代游标时从Android SQLite数据库中删除行是否安全,第1张

概述例如:publicvoidremoveStaleMovies(Set<String>updatedMovieList){Cursorcur=this.getReadableDatabase().rawQuery("SELECTid,title,yearFROMmovie",null);cur.moveToFirst();while(!cur.isAfterLast()){Stringtitl

例如:

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,这应该没问题.在这种情况下,Cursor在堆空间中保存整个结果集,因此它与基础数据库的任何更改都是隔离的.

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

总结

以上是内存溢出为你收集整理的java – 迭代游标时从Android SQLite数据库中删除行是否安全全部内容,希望文章能够帮你解决java – 迭代游标时从Android SQLite数据库中删除行是否安全所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1114749.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存