android 如何同步本地SQLite数据库和远程数据库以执行删除操作?

xjreopfe  于 2023-02-10  发布在  Android
关注(0)|答案(4)|浏览(351)

我有一个本地sqlite数据库在Android应用程序运行在多个设备上与远程数据库同步。每次我提取数据显示在用户界面上,我从本地数据库获得数据,然后从远程数据库查询并将它们插入本地数据库,使用下面的代码:

database.replaceOrThrow(TABLE_NAME,null,values);

除了有人从一个设备删除外,这个运行正常。2当远程数据库中的行被删除时,我怎么知道我本地数据库中的哪一行需要被删除呢?
有两个选择我都不喜欢1)每当我从远程数据库读取数据时,清除本地数据2)将本地数据与远程数据进行比较,找出远程数据中缺少哪一行,然后从本地数据库中删除。
对于这种常见的情况有什么最好的做法吗?谢谢!

kcrjzv8t

kcrjzv8t1#

我会选择选项2。您可以很容易地计算本地数据库和远程数据库之间的增量。可以创建两个ArrayList,其中包含对记录的主键或其他键的投影,然后使用removeAll计算本地列表和远程列表之间的差异此时,您有一个记录的所有键的列表,这些记录不再存在于您的远程数据库中,因此可以从您的本地数据库中删除。

c9qzyr3d

c9qzyr3d2#

也许你可以试试这个:

  • Modification完成时的time存储为Remote数据库。
  • Shared Preference中存储您的表creationupdation的时间。
  • 最后比较:remote_table_time > table_time,并获取那些时间为greater thancreation时间的条目
gpnt7bae

gpnt7bae3#

应用任何手动同步逻辑都将是复杂的,难以调试和维护的噩梦。您的问题似乎假设远程数据库是真实的来源,但如果您允许用户在“离线”时进行数据更改,那么您还需要将本地更改追溯同步到远程存储。
我建议你在sync adapter上做个小测验。

rqcrx0a6

rqcrx0a64#

给谁曾经寻找这个问题。这是伟大的视频解释概念离线第一应用程序
https://youtu.be/jaZ2gLMGUsM

相关问题