【发布时间】: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.API调用返回5项
2.将其插入房间数据库
3.再次调用相同的API,但这次只返回4项
4.应该从房间数据库中删除一项
这是怎么做到的?
@Insert(onConflict = OnConflictStrategy.REPLACE)
不工作
【问题讨论】:
标签: android sqlite android-room sql-delete
上面的插入接口方法不会删除你的备用行。
它的作用是每次插入一个实体并且该实体已经存在(意味着存在相同的 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
}
}
【讨论】: