SQLite数据与服务器同步,删除所有+插入或逐行更新行?

时间:2018-01-04 07:51:37

标签: android sqlite android-sqlite

我的应用程序从服务器获取数据并将其保存在sqlite中,每行都有唯一的 serverId 。记录大于1000。

当应用程序重新启动时,我向用户显示sqlite数据(当没有互联网sqlite数据出现时),并在后台从服务器重新获取数据。

当从服务器收到重新获取的数据时,我应该怎么做: -

1 - 按一个查询删除所有记录,然后再次插入所有数据。 要么 2 - 通过在查询的WHERE子句中使用 serverId 进行匹配逐个更新所有行,插入服务器数据中的所有新行,删除新服务器数据中不存在但存在于sqlite中的所有行。

1 个答案:

答案 0 :(得分:0)

这取决于数据更新的频率。如果数据更新频率与新启动时一样,大部分数据都必须更新 - 您甚至可以从服务器下载全新的数据库文件。但如果它只是略微更新 - 您应该逐个更新它。

如果您想要一个完美的解决方案,您可能应该保留数据库的版本,并让服务器决定是否更容易重新下载数据库,或更新更改的数据。

示例1:
该应用拥有数据库的v1 服务器有v2
v1 vs v2 diff是数据库大小的10% - >>使用diff(例如逐行)更新v1v2会更容易。

例2:
该应用拥有数据库的v1 服务器有v2
v1 vs v2 diff是数据库大小的80% - >>完全重新下载数据库更容易(不浪费时间更新数据库)。