2012-07-03 163 views
0

我創建了一個數據庫在Android爲我的應用程序與列ID,渠道,名稱 我可以創建罰款和一切正常。 我的ID附加到特定於該頻道的命令。 當我有15個通道,我去刪除通道4時,它會創建通道16,而不是先替換通道4。Sqlite數據庫優化,替換已刪除的條目

有沒有一種方法,我可以使用它將首先搜索「空」RowIds在添加值之前?

回答

0

如果ID列是自動遞增,則不能替換4.每個插入列值都前進1。

你可以刪除自動增量照顧你自己的ID。但爲此你必須在每個插入中搜索缺失的數字(效率不高)。也許你也可以將刪除的ID保存在一些輔助表中。這可以幫助您避免查找。但不知道它是否值得...

+0

有沒有我可以創建的任何一種數組來跟上ID? –

+0

你可以有一個deletedIds數組/表格。每次刪除時,將刪除的ID插入到該陣列中。插入新頻道時,請從該數組中選擇最小值並將其刪除。 – Ran

0

如果插入發生了唯一約束違規,那麼將更新一行。因此,您的示例中的ID列需要在數據庫模式中具有PRIMARY KEY約束以用於要更新的​​行

contentValue c; 
SQLiteDatabase db=getWritableDatabase(); 
db.replace("table_name", null, c); 
+0

虐待檢查這一點,如果它的工作,生病只是設置爲5個變量的ID爲了節省多達5個ID需要被替換,其凌亂,但如果它的工作.... –

+0

正確設置變量C和你不會遇到問題。 – Xenione