【问题标题】:Delete row from room db从房间数据库中删除行
【发布时间】:2020-01-23 10:19:13
【问题描述】:

1.API调用返回5
2.将其插入房间数据库
3.再次调用相同的API,但这次只返回4
4.应该从房间数据库中删除一项

这是怎么做到的?

@Insert(onConflict = OnConflictStrategy.REPLACE)

不工作

【问题讨论】:

    标签: android sqlite android-room sql-delete


    【解决方案1】:

    上面的插入接口方法不会删除你的备用行。 它的作用是每次插入一个实体并且该实体已经存在(意味着存在相同的 PK)时,它将用新实体替换旧实体。 你需要做的是

    result = Dao()."Select * from _your_table"
    
    result.forEach {
       if (it.primary_key_id.existsIn(response_from_server_list)) {
          Dao.insert(it)      // Will replace the already existed
       } else {
          Dao.delete(it)      // Will delete the rows that does not exist in server respone
       }
    }
    

    【讨论】:

    • 是的,这个逻辑是对的,我只是想知道是否有比这更简单的方法
    • 嗯,我想不出别的了。我需要对我的应用程序做同样的事情,所以如果有人有更优雅和自动的东西,我会继续关注讨论......! :)
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多