在插入到 sql 数据库时是否可以点击许多“插入时重复行”或者是否有更好的方法?
我正在从我的服务器下载“评论”并将它们显示在我的 android 手机上的 ListView 中..
这是我的做法:
1 - 每当我显示 ListView 时,我都会通过 xml 从服务器获取最后 15 条评论。
2 - 我将评论插入到手机上的本地 sql 数据库中
3 - 我使用从本地 sql 数据库加载数据的适配器更新 ListView 。
我每 30 秒重复第 1、2 和 3 步。当 Activity 点击 onResume 时,我也会重复第 1、2 和 3 步...
除非另一个 android 客户端上传了新评论,否则从服务器获取的所有评论都是重复的,将它们插入数据库会返回 SQLConstraintException,因为我不允许重复相同的评论。
这样可以吗?我每 30 秒抛出 10-15 行的异常。有没有更好的方法不会影响性能?我看不出在插入之前检查该行是否存在的意义,因为那肯定会更慢。我可能会在查询时向服务器传递一个变量,告诉它我最新的评论是什么。
我敢肯定很多人已经走到了这个十字路口。我们应该从这里去哪里?
感谢讨论..
最佳答案
如果你的服务器的数据库有一个顺序的、增量的键,那么是的,我会用一个附加条件“...AND SeqIdField > [my last id]”来查询。如果没有返回任何记录,那么您只需重置计时器并等待再次查询。
即使没有顺序 ID,但您可以在特定日期/时间之后插入记录,然后只需确保该日期/时间包含在您的结果中并将最新的作为参数传回。如果您不想/不需要将该日期/时间存储在您的本地设备上,那么只需将最新的日期/时间保存在某处,这样当您的应用再次运行时您就知道从哪里获取备份。
关于android - 反复故意使重复行上的数据库插入失败是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713978/