Лучший способ убедиться, что я не вставляю информацию в базу данных sqlite, которая уже там? - PullRequest
0 голосов
/ 05 мая 2011

Я нахожусь в процессе создания программы, которая позволяет выполнять поиск из приложения.Затем приложение загрузит результаты поиска и сохранит их в базе данных.Я использовал URL в качестве первичного ключа, чтобы убедиться, что я не вводил одни и те же данные дважды (поскольку URL-адреса обязательно являются уникальным идентификатором), однако это вызвало несколько проблем.База данных выдаст ошибку и произойдет сбой при попытке сохранить строку с тем же URL-адресом.Я полагаю, это хорошо, так как я могу поместить свой оператор вставки в блок try / catch.У меня есть несколько вопросов:

  1. Что я должен ловить (попробуйте блок catch), чтобы обнаружить, когда возникает ошибка, подобная этой, когда элемент, который он пытается вставить в БД, уже хранится?

  2. Это работает с простым подходом «добавлять каждый результат поиска в БД 1 за раз».Что делать, если я хочу сделать транзакцию базы данных и добавить ~ 25 за раз.Как бы я выяснил, какой из них был ошибкой, и как лучше всего это сделать?Есть ли способ продолжить добавление остальных, у которых не было проблемы?

  3. Как бы я поступил так, если бы я не хотел использовать URL в качестве основногоключ?

Ответы [ 3 ]

0 голосов
/ 05 мая 2011
0 голосов
/ 05 мая 2011

Вы можете попробовать использовать INSERT OR REPLACE http://www.sqlite.org/lang_insert.html

0 голосов
/ 05 мая 2011

Что ж, вы можете запустить select для таблицы, чтобы увидеть, есть ли там URL, прежде чем пытаться вставить его.

Но, возможно, вам все равно следует попытаться более изящно справиться с ошибками вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...