2012-07-03 164 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