在插入sql db时是否可以点击许多“插入时重复行”或者有更好的方法吗?
我从我的服务器下载“评论”并在我的Android手机上的列表视图中显示它们。
我是这样做的:
1 - 每当我显示列表视图时,我都会从服务器通过xml获取最后15条评论。
2 - 我将评论插入手机上的本地sql数据库
3 - 我使用从本地sql数据库加载数据的适配器更新列表视图。
每30秒我会重复步骤1,2和3 ..当活动点击onResume时,我也会重复步骤1,2和3 ...
除非另一个Android客户端上传了新注释,否则从服务器获取的所有注释都是重复的,并且将它们插入到db中会返回SQLConstraintException,因为我不允许重复相同的注释。
这可以吗?我每隔30秒抛出10-15行这个异常。有没有更好的方法不会伤害性能?我没有看到在插入之前检查行是否存在的重点,因为那肯定会慢一点。当我查询它时,我可能会将一个变量传递给服务器,告诉它我的最新评论是什么。
我确信许多人已经到达了这个十字路口。我们应该从哪里开始?
感谢您的讨论..
答案 0 :(得分:2)
如果你的服务器的db有一个顺序的增量密钥,那么是的,我只会查询一个附加条件“...和SeqIdField> [我的最后一个id]”。如果没有返回任何记录,那么您只需重置计时器并等待再次查询。
即使没有顺序ID,但您可以在特定日期/时间之后插入记录,然后只需确保结果中包含日期/时间,并将最新的日期/时间作为参数传回。如果您不希望/需要将该日期/时间存储在本地设备上,那么只需将最新版本保存在某个位置,以便在应用程序再次运行时知道在哪里备份。