2010-11-23 42 views
0

我有一個使用sql遊標的自定義適配器的列表視圖。當我添加項目到我的列表視圖,該項目將被添加到我的sqlite3數據庫和列表視圖將刷新。強制執行主鍵的Android SQLite3問題

我的一個問題是,我可以添加重複的項目,我不希望我的應用程序,以允許添加重複。

我已經添加了一個主鍵到我的數據庫(itemNumber),但是數據庫似乎沒有執行此操作。這是我如何創建我的數據庫:

private static final String DB_CREATE_MASTER = "CREATE TABLE " 
      + "MyTable" 
      + " (_id INTEGER, itemNumber TEXT," 
      + "itemPlace TEXT," + "itemTimeTEXT," 
      + "itemCode INTEGER," 
      + "dbdatestamp TEXT" + "PRIMARY KEY(itemNumber)" +");"; 

有誰知道爲什麼我能itemNumber增加超過1複製到我的列表視圖?

謝謝!


編輯:

private static final String DB_CREATE_MASTER = "CREATE TABLE " 
      + "MyTable" 
      + " (_id INTEGER PRIMARY KEY, itemNumber TEXT," 
      + "itemPlace TEXT," + "itemTimeTEXT," 
      + "itemCode INTEGER," 
      + "dbdatestamp TEXT" + "UNIQUE(itemNumber)" +");"; 

編輯:


這是我如何添加itemNumber到數據庫:

values.put("itemNumber", myClass.itemNumber); 
values.put("itemName", myClass.itemName); 
values.put("itemTime", myClass.itemTime); 
values.put("dbdatestamp", "03/01/1960 08:55"); 
this.db.insert(MY_TABLE, null, values); 

回答

1

你的主鍵由2場:_id和itemNumber。這意味着重複的itemNumber不足以執行約束。重複將是具有相同_id和itemNumber的項目。您可以像這樣更改CREATE語句

PRIMARY KEY(_id), UNIQUE(itemNumber) 

UNIQUE約束不允許重複項目編號。

+0

對不起,我並不想在我的發佈代碼中在主鍵中包含_id。我仍然能夠添加重複值,當我刪除_id作爲主鍵或者如果我使物品編號唯一...請參閱上面的更新.. – littleK 2010-11-23 17:32:05