我创建了一个数据库在Android为我的应用程序与列ID,渠道,名称 我可以创建罚款和一切正常。 我的ID附加到特定于该频道的命令。 当我有15个通道,我去删除通道4时,它会创建通道16,而不是先替换通道4。Sqlite数据库优化,替换已删除的条目
有没有一种方法,我可以使用它将首先搜索“空”RowIds在添加值之前?
我创建了一个数据库在Android为我的应用程序与列ID,渠道,名称 我可以创建罚款和一切正常。 我的ID附加到特定于该频道的命令。 当我有15个通道,我去删除通道4时,它会创建通道16,而不是先替换通道4。Sqlite数据库优化,替换已删除的条目
有没有一种方法,我可以使用它将首先搜索“空”RowIds在添加值之前?
如果ID列是自动递增,则不能替换4.每个插入列值都前进1。
你可以删除自动增量照顾你自己的ID。但为此你必须在每个插入中搜索缺失的数字(效率不高)。也许你也可以将删除的ID保存在一些辅助表中。这可以帮助您避免查找。但不知道它是否值得...
如果插入发生了唯一约束违规,那么将更新一行。因此,您的示例中的ID列需要在数据库模式中具有PRIMARY KEY约束以用于要更新的行
contentValue c;
SQLiteDatabase db=getWritableDatabase();
db.replace("table_name", null, c);
虐待检查这一点,如果它的工作,生病只是设置为5个变量的ID为了节省多达5个ID需要被替换,其凌乱,但如果它的工作.... –
正确设置变量C和你不会遇到问题。 – Xenione
有没有我可以创建的任何一种数组来跟上ID? –
你可以有一个deletedIds数组/表格。每次删除时,将删除的ID插入到该阵列中。插入新频道时,请从该数组中选择最小值并将其删除。 – Ran