大佬教程收集整理的这篇文章主要介绍了android – 房间 – 插入或替换,但保留数据库字段?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的本地数据库中有一个名为event的表,其中包含以下字段:
> id(PK)
>姓名(文字)
>日期(时间)
>收藏夹(int,0或1)
服务器会给我一个事件列表,没有收藏字段,最喜欢的字段只是本地的.
我正在使用此代码插入事件
@Insert(onConflict = OnConflictStrategy.replaCE)
void insertEvents(List
问题是,如果一个事件已经存储在本地数据库中,它将丢失最喜欢的属性,并且在插入和替换之后它将始终为false.
有没有办法像这样批量插入,但保留最喜欢的字段?
用于远程数据的表ServerData.
表ServerDataAttrs表示仅本地数据.
ServerDataAttrs包含所有本地列以及表ServerData中的主键ID.
ServerData.id == ServerDataAttrs.id
这样,ServerDataAttrs中的每一行都与ServerData中的对应行相关(另一种方式不需要,这就是我以后使用LEFT JOIN的原因).您始终可以替换ServerData上的数据,ServerDataAttrs中的本地数据将保持不变.
我没有设置外键以避免意外删除.我只在从DAO调用delete方法时删除了本地数据.
public class ServerDataWithAttrsPojo {
private long id;
private String name;
...
privatE int favorite;
// public constructor,getters and setters...
}
SELECT sd.id,sd.name,....,sda.favorite
FROM ServerData sd LEFT JOIN ServerDataAttrs sda ON sd.id = sda.id
我使用LEFT JOIN,以防ServerData中的实体在ServerDataAttrs中没有像我之前提到的那样.
以上是大佬教程为你收集整理的android – 房间 – 插入或替换,但保留数据库字段?全部内容,希望文章能够帮你解决android – 房间 – 插入或替换,但保留数据库字段?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。