怎么实现sqlite更新数据库表,数据存在则更新,没有则插入,数据库原来有但是新的数据没有则删除原数据

重点是怎么删除。比如本地一张表中存放的缓存数据,服务器的数据变化了,本地更新缓存的时候获取服务器数据,如果本地数据有这条数据就更新,没有就插入,如果本地有一条数据是服务器数据库中所没有的,就从本地把这条数据删除。怎么实现?

假设A是本地表,B是服务器的表,主键是KEY
//从A中删除B表中没有的数据

DELETE FROM A WHERE A.KEY NOT IN (SELECT B.KEY FROM B)
//按照B的数据更新(或插入)A
INSERT OR REPLACE INTO A(KEY, Column1) SELECT B.Key,B.Column1 FROM B WHERE B.KEY=A.KEY追问

多谢您的思路,再劳烦问一下,如果获取服务器的数据返回json,解析成list之后该怎么实现上述删除的功能?就是这句DELETE FROM A WHERE A.KEY NOT IN 后面的条件应该是什么呢?

追答

在旧list中循环每一条,如果此条数据无法在新list中找到,说明被删除了。

追问

多谢啦,找到思路了~

温馨提示:答案为网友推荐,仅供参考
相似回答