我正在寻找一种方法来填充/更新我的 SQLiteDatabase
表。
在某些情况下,我需要得到通知(通过某些返回值)。每行包含一个需要稍后下载的文件的 url。
- 行还不存在:插入它并通知我应该列出该行以供下载。
- 行确实存在,但我要插入的行包含与数据库中已有行相同的值:什么都不做,不要通知我这应该下载。
- 行确实存在并且我要插入的行包含不同的值作为数据库中已有的行:替换此行,通知我这应该是下载。
我一直在寻找答案,但似乎找不到好的答案。我应该使用 insertWithOnConflict()
、replace()
、replaceOrThrow()
、...
谢谢!
最佳答案
在单个 sqlite 事务中分两步完成:
按 rowid 查询。如果没有找到 rowid 或没有找到结果,则插入新的并下载。
比较新行的 url 和在步骤 1 中检索到的行。仅当 url 不同时,才更新行并下载,否则不进行任何操作。
关于android - SQLiteDatabase 插入或替换(如果更改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134274/