2015-05-04 50 views
0

在我正在開發的應用程序中,用戶可以保存5個不同的名稱。然後,用戶將選擇要使用的名稱,並將其插入列表中。如何做SQL數據庫ID?

要做到這一點,我使用3個DB管理整個功能。在第一個數據庫中,我保存了名稱。這些名稱在數據庫中有一個自動生成的ID。然後,當用戶選擇一些名稱時,這些名稱的ID將保存在其他數據庫中,然後它們將加載到列表中並保存在las DB中。

我面臨的問題是,當我編輯名稱時,讓我們說ID 3的那個,它仍然有該ID,所以當我再次進入列表時,我檢查更新並且它發生了更改舊名稱與新的名稱,檢查匹配的ID。

但是,如果我刪除一個名稱並創建一個新名稱,那麼它將有一個新的ID值,可以說7,並且當我想在列表中替換它時,它不會找到舊名稱,因爲這個新的ID不存在。

我沒有太多的數據庫經驗,我不知道我是否可以例如手動管理ID值......我有點困惑,所以我很感激任何有關如何面對此問題的建議。

這是DatabaseHelper`s的onCreate():

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + 
      Travelers._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      Travelers.NAME + " TEXT NOT NULL " + 
      ");"); 
} 
+0

什麼再次是你的問題? –

+0

@ AC-OpenSource對不起,如果我的解釋不夠清楚。問題是匹配數據庫的值,即使我刪除一個項目。 – masmic

回答

1

當你刪除一個名字,你也應該從其他數據庫中刪除。然後只需插入一個新名稱並將其插入其他數據庫。

或者,我會做什麼,我會設置一個標誌,當一個記錄被刪除,以便我知道該記錄應該被替換爲一個新的,這樣你就知道什麼記錄要替換。

例如:

 

I added 5 names on Database1: 
ID Name 
1  Hello 
2  World 
3  I 
4  am 
5  AC-OpenSource 


I also added this records on database 2: 
ID DB1ID     is_deleted 
2  1  //hello   false 
5  4  //am    false 
7  2  //world   false 
20 3  //I    false 
22 5  //AC-OpenSource false 

If I delete the record with ID 5 in Database1 
I would also update is_deleted of Database2 with DB1ID of 5 to true 

You should figure out what to do next. 

+0

謝謝,這樣的事情會有所幫助 – masmic