Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android是否删除所有行或更新并删除旧行?_Android_Sqlite - Fatal编程技术网

Android是否删除所有行或更新并删除旧行?

Android是否删除所有行或更新并删除旧行?,android,sqlite,Android,Sqlite,我需要在android应用程序中存储来自web服务器的联系人列表。android数据只是web服务器的一个副本,联系人在表中没有外键。我正在考虑定期更新android数据。但我想知道哪种方法最适合更新数据,我想: 删除表中的所有行并插入web服务器中的所有数据 更新与Web服务器匹配的行,并删除未更新的行 哪种方法在性能方面更好?这是我以前在项目中所做的: 首先,截断整个表并对应用程序中的数据库进行新存储取决于同步数据的大小。显然,如果大小很小,可以删除所有内容 我使用的解决方案是在远程服务器

我需要在android应用程序中存储来自web服务器的联系人列表。android数据只是web服务器的一个副本,联系人在表中没有外键。我正在考虑定期更新android数据。但我想知道哪种方法最适合更新数据,我想:

  • 删除表中的所有行并插入web服务器中的所有数据
  • 更新与Web服务器匹配的行,并删除未更新的行

  • 哪种方法在性能方面更好?

    这是我以前在项目中所做的:

    • 首先,截断整个表并对应用程序中的数据库进行新存储取决于同步数据的大小。显然,如果大小很小,可以删除所有内容
    • 我使用的解决方案是在远程服务器(对应的表)中有一列,当删除联系人项目时,您可以使用时间戳更新为deleted,或者只说[deleted]
    • 向下同步到手机时,请检查是否仅同步未删除或已更新/新建的项目。或
    • 使用JSON字段[deleted:true]同步联系人,然后在android代码中检查[deleted==true],然后从本地数据库中删除该联系人项目。您只需在存储新项目时循环浏览列表
    • 这意味着您将只下拉新的或更新的项目,而不会不必要地触摸未修改的项目。这减少了您必须进行的交易量

    祝您好运,我希望这会有所帮助。

    如果我无法更改远程服务器,该怎么办?这意味着您必须截断本地表并重新存储。当然,除非从服务器同步下来的已删除项目有一个标志表明它们已被删除。如果是这样,那么只需检查标志。