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