Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
如果iPhone应用程序中不存在记录,请在表中插入记录_Iphone_Ios_Json_Sqlite - Fatal编程技术网

如果iPhone应用程序中不存在记录,请在表中插入记录

如果iPhone应用程序中不存在记录,请在表中插入记录,iphone,ios,json,sqlite,Iphone,Ios,Json,Sqlite,我从url获取json数组,并将数据插入表中。由于url的内容可能会发生更改,因此我希望与url建立第二个连接,并使用sqlite3检查更新并在y表中插入新记录 我面临的问题是: 1我的表没有主键 2 url列出了当天的更改。因此,如果我多次运行我的应用程序,当我在数据库中插入值时,会得到重复的条目。我想保留一个检查的日期重复条目,应删除。这个问题可以通过添加一个约束来解决,但由于url本身有重复的值,我发现这很困难。如果您没有主键或每个记录都可以使用的唯一方法,是指当您获取新数据时,您通过新条

我从url获取json数组,并将数据插入表中。由于url的内容可能会发生更改,因此我希望与url建立第二个连接,并使用sqlite3检查更新并在y表中插入新记录

我面临的问题是:

1我的表没有主键


2 url列出了当天的更改。因此,如果我多次运行我的应用程序,当我在数据库中插入值时,会得到重复的条目。我想保留一个检查的日期重复条目,应删除。这个问题可以通过添加一个约束来解决,但由于url本身有重复的值,我发现这很困难。

如果您没有主键或每个记录都可以使用的唯一方法,是指当您获取新数据时,您通过新条目检查数据库中是否已经存在完全相同的数据。如果没有,那么你添加它,如果有,那么你跳过它


您甚至可以为每个条目自己创建一个唯一的键,这是表中每个列的串联。这样,您就可以快速检查数据库中是否已经存在该条目。

根据您的设置,我认为有两种可能性:

您的列设置是唯一的,这可以通过主键进行设置,也可以不通过主键进行设置。在这种情况下,您可以使用ON CONFLICT子句:

如果您觉得这个构造有点混乱,可以使用INSERT或REPLACE或INSERT或IGNORE,如下所述:

您没有列设置为唯一。在这种情况下,您需要选择first来验证重复数据,并根据结果插入、更新或不执行任何操作


处理此问题的一种更常见、更健壮的方法是将时间戳与服务器上的每个数据项相关联。当你的应用程序询问服务器时,它会提供与上次同步时间相对应的时间戳。然后,服务器查询其数据库并返回时间戳晚于应用程序提供的时间戳的所有值。然后,它还会返回一个新的时间戳值,供应用程序存储,以便在下次同步时使用