我从url获取json数组并将数据插入表中。由于url的内容可能会发生变化,我想与url建立第二个连接并检查更新并使用sqlite3在y表中插入新记录。
我面临的问题是:
1)我的表没有主键
2)网址列出了当天的更改。因此,如果我多次运行我的应用程序,当我在数据库中插入值时,我会得到重复的条目。我想检查一天应该删除的重复条目。可以通过添加约束来解决问题,但由于url本身具有重复值,因此我觉得很难。
答案 0 :(得分:0)
我能看到你的唯一方法是,如果你没有主键或你可以使用的每个记录都是独一无二的,那么当你获得新数据的时候,你会看到每个你的新数据。检查数据库中是否存在完全相同的数据。如果没有,那么你添加它,如果它,那么你跳过它。
您甚至可以为每个条目自己创建一个唯一键,这是表的每一列的串联。这样,您可以快速检查数据库中是否已存在该条目。
答案 1 :(得分:0)
根据您的设置,我会看到两种可能性:
您将列设置为UNIQUE(可以通过PRIMARY KEY进行设置)。在这种情况下,您可以使用ON CONFLICT子句:
http://www.sqlite.org/lang_conflict.html
如果您发现此构造有点令人困惑,您可以改为使用“INSERT OR REPLACE”或“INSERT OR IGNORE”,如下所述:
您没有将列设置为UNIQUE。在这种情况下,您需要首先选择SELECT以验证重复数据,并根据结果INSERT,UPDATE或不执行任何操作。
答案 2 :(得分:0)
更常见的&处理此问题的强大方法是将时间戳与服务器上的每个数据项相关联。当您的应用询问服务器时,它会提供与上次同步时对应的时间戳。然后,服务器查询其数据库并返回比应用程序提供的时间戳晚的时间戳的所有值。然后,它还会为要存储的应用返回新的时间戳值,以便在下次同步时使用。