2014-01-05 4 views
0

Я раньше не использовал SQLite. Насколько я помню, когда я использовал MySQL, если я создаю ограничение с опцией UNIQUE, я бы не получил никаких ошибок, если попытаюсь добавить дублирующий элемент.SQLite, избегающий дублирования записей

Похоже, что это не относится к SQLite.

Это, как я создаю мой стол:

// Create table for Wi-Fi Information 
    myDB.execSQL("CREATE TABLE IF NOT EXISTS " + WIFI_DATABASE_TABLE 
      + " (WifiName VARCHAR UNIQUE);"); 

Это, как я вставлять элементы

if (tab == DBTable.WIFI_DATABASE) { 
     myDB.execSQL("INSERT INTO " + WIFI_DATABASE_TABLE 
       + " (WifiName)" + SQLValues + ";"); 
    } 

Моя проблема в том, когда я вставляю тот же элемент, я получаю Column WifiName name not unique (code 19) ошибку. Я хочу просто не видеть никаких ошибок. Как я могу это сделать, не играя с исключениями?

ответ

2

Укажите разрешение конфликтов, так что операция не удастся, и исключение не брошено:

INSERT OR IGNORE INTO ...; 

Reference

+0

'' ON CONFLICT IGNORE' Часть должна быть введена в самом конце или рядом с ограничением? –

+0

«ON CONFLICT IGNORE» - это синтаксис, который можно использовать при указании ограничений при создании таблицы. Для вставок это «OR IGNORE». Обновлен ответ. – laalto

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