Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 确保我没有将信息插入已经存在的sqlite数据库的最佳方法是什么?_Android_Sqlite - Fatal编程技术网

Android 确保我没有将信息插入已经存在的sqlite数据库的最佳方法是什么?

Android 确保我没有将信息插入已经存在的sqlite数据库的最佳方法是什么?,android,sqlite,Android,Sqlite,我正在制作一个程序,允许您从应用程序执行搜索。然后,应用程序将下载搜索结果并将其存储在数据库中。我使用url作为主键,这样我可以确保输入的数据不会重复两次,因为url肯定是唯一的标识符,但是这会导致一些问题。当试图保存具有相同URL的行时,数据库将出现错误并崩溃。我认为这很好,因为我可以将insert语句放在try/catch块中。不过,我有一些问题: 我应该捕获什么try-catch块,以便在它试图插入到数据库中的项已经被存储的地方发生类似这样的错误时进行检测 这是一种简单的一次将每个搜索结果

我正在制作一个程序,允许您从应用程序执行搜索。然后,应用程序将下载搜索结果并将其存储在数据库中。我使用url作为主键,这样我可以确保输入的数据不会重复两次,因为url肯定是唯一的标识符,但是这会导致一些问题。当试图保存具有相同URL的行时,数据库将出现错误并崩溃。我认为这很好,因为我可以将insert语句放在try/catch块中。不过,我有一些问题:

我应该捕获什么try-catch块,以便在它试图插入到数据库中的项已经被存储的地方发生类似这样的错误时进行检测

这是一种简单的一次将每个搜索结果添加到DB1的方法。如果我想做一个数据库事务,一次添加~25个呢。我怎样才能知道哪一个是错误的,最好的方法是什么?有没有办法继续添加其他没有问题的内容

如果我不想将url用作主键,我将如何执行此操作? 好的,在尝试插入URL之前,您可以在表上运行select以查看URL是否已经存在


但无论如何,您可能应该尝试更优雅地处理插入错误。

创建一个或。

您可以尝试使用插入或替换

在我输入数据之前对每一行数据运行select enter将是一个非常低效的解决方案。我确信有更好的方法,我只是不知道它们是什么。我认为这可能与尝试/抓住有关。我只需要捕捉正确的异常。这实际上是一种非常常见的方法。除非进行检查,否则在插入之前,您如何知道某个对象是否存在?如果您有很多重复项,我希望捕获异常比为每行运行select要慢。假设您确实希望用新行覆盖旧行。