【问题标题】:Insert records if criteria is met Room Database如果满足条件则插入记录 房间数据库
【发布时间】:2019-09-16 16:23:45
【问题描述】:

我有一种情况,我想将从服务器获取的记录列表与本地数据库记录进行比较,如果满足某些条件,则将记录插入数据库中。例如我有名为mediaUploadedCountEntity 列。 mediaUploadedCount 是本地数据库中的 29。我点击 API 来获取新记录,如果这条记录的 mediaUploadedCount28,那么在插入时忽略这条记录。此记录的一种可能解决方案可能是:

  • 从数据库中获取记录
  • 将服务器记录与本地数据库记录进行比较
  • 插入所有符合条件的记录

但是这种方法会减慢插入过程。

有没有什么方法可以在插入之前应用某些标准或针对这种情况的任何其他想法?

【问题讨论】:

    标签: android android-sqlite android-room


    【解决方案1】:

    我在这里看到两种情况:

    1. 您将 mediaUploadedCount 视为您的主要 uid,Room 会为您处理非重复。

    2. 您在 Room Dao 中插入查询条件:

        INSERT INTO table-name (column-names) 
        WHERE condition
    

    【讨论】:

    • 在此查询中,我想将记录与 db 列值进行比较。假设我必须插入 50 条记录,对于所有 50 条记录,我想将 mediaUploadedCount 与 DB 中的 mediaUploadedCount 值进行比较。
    • 对于场景You treat mediaUploadedCount as your primary uid and Room handles non-duplication for you. ,这将不起作用。因为 28 与 29 不同,但我想忽略 28 并将 29 保留为 29 ios 最新记录。
    • 请问您为什么要将此上传计数存储为变量?你能不能通过在获取媒体时返回它们的大小来达到同样的目的?
    • 我有一个Recyclerview,我应该在其中29/130mediaUploadedCount = 29medialTotalCount = 130,为此需要保持单独的计数。如果每次我都需要从 sdcard 文件中计算,那么在 onBindViewHolder 中渲染它会更慢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多