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

问题描述 投票:-2回答:1

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

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

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

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

android sqlite android-sqlite
1个回答
0
投票

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

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

例1: 该应用程序具有DB的v1 服务器有v2 v1 vs v2 diff是DB大小的10% - >>使用diff(例如逐行)将v1更新为v2更容易。

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

© www.soinside.com 2019 - 2024. All rights reserved.