2014-01-05 184 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

是否处于冲突状态?部分应该在约束的最后或旁边输入? –

+0

'ON CONFLICT IGNORE'是在创建表格时指定约束条件时可以使用的语法。对于插入它是“或IGNORE”。更新了答案。 – laalto