2015-03-22 4 views
-1

Я пытаюсь написать в базу данных, в моей спецификации я должен был убедиться, что нет дубликатов для определенного поля. Большой! Я могу просто сделать столбец уникальным.Android-SQLite: как бороться с уникальными значениями?

Но я понятия не имею, как с этим бороться. Если я использую приложение и случайно вставил новое значение, которое уже существует, приложение просто выйдет из строя. Как проверить, что значение уже существует до того, как я попытаюсь обновить базу данных?

Я чувствую, что команда if будет работать, Buuuuut, как вы сканируете каждое значение для этого столбца на Android в любом случае?

+0

'Если я использую приложение и случайно вставить новое значение, которое происходит уже существует, приложение будет просто crash.' ** Q: ** Как вы обрабатывать ошибки? ** A: ** с помощью 'try ... catch [... finally]' –

ответ

1

Я предполагаю, что вы можете прочитать все строки в таблице, а для каждой строки - проверить, существует ли это значение. Если не существует, вставьте, иначе, обработайте конфликт.

Другой способ сделать это - использовать метод insertWithOnConflict(). Вы можете установить различные стратегии разрешения конфликтов, таких как:

  • CONFLICT_ABORT
  • CONFLICT_FAIL
  • CONFLICT_IGNORE
  • CONFLICT_NONE
  • CONFLICT_REPLACE
  • CONFLICT_ROLLBACK

Я не имею ни малейшего представления по сложности этого метода, но probabl y это намного лучше, чем чтение всех строк вручную и проверка вручную.

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertWithOnConflict(java.lang.String,%20java.lang.String,%20android.content.ContentValues,%20int)

Смежные вопросы