android - SQLiteDatabase 插入或替换(如果更改)

标签 android sqlite android-sqlite

我正在寻找一种方法来填充/更新我的 SQLiteDatabase 表。 在某些情况下,我需要得到通知(通过某些返回值)。每行包含一个需要稍后下载的文件的 url。

  1. 行还不存在:插入它并通知我应该列出该行以供下载。
  2. 行确实存在,但我要插入的行包含与数据库中已有行相同的值:什么都不做,不要通知我这应该下载。
  3. 行确实存在并且我要插入的行包含不同的值作为数据库中已有的行:替换此行,通知我这应该是下载。

我一直在寻找答案,但似乎找不到好的答案。我应该使用 insertWithOnConflict()replace()replaceOrThrow()、...

谢谢!

最佳答案

在单个 sqlite 事务中分两步完成:

  1. 按 rowid 查询。如果没有找到 rowid 或没有找到结果,则插入新的并下载。

  2. 比较新行的 url 和在步骤 1 中检索到的行。仅当 url 不同时,才更新行并下载,否则不进行任何操作。

关于android - SQLiteDatabase 插入或替换(如果更改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134274/

相关文章:

android - 实现 'com.github.prolificinteractive:material-calendarview:2.0' 无法解析

android - 动态 ListView 保存状态

php - 尝试在 Amazon EC2 上升级 sqlite

sql - 为什么我们需要 SQLite 中的 GLOB 子句?

SQL:按优先级排序,但将 0 放在最后

android - 控制android中下载管理器的下载顺序

java - 从数据库查询中获取总和而不是在 Android 上添加结果是否不好(性能)?

sqlite - 修改Sqlite表列NOT NULL为NULL

ruby-on-rails - 使用 AR 纠正 Postgres 和 SQLite3 中以 nil 值排序日期时的不同行为

java - 如何在 SQLite 数据库中保存 getIntent() 值?