将sqlite列添加到现有数据库或在删除时重新编制数据库

时间:2013-07-16 18:34:06

标签: android sqlite android-contentprovider

在我的应用程序中,我可以选择让用户完全重置应用程序(删除他们设置的所有数据/首选项),这样我们在选择重置时所做的就是在ContentProvider <中删除所有内容/ p>

例如

getActivity().getContentResolver().delete(CalEvents.CONTENT_URI, null, null);

这样做我认为现在正在清理的数据库会将id计数器返回到1,但显然并非如此

问题是我的一个表使用数据库标识1-16来查找数据但是当该表被删除时,该数据库的下一个插入将是17-33,这会导致问题,因为我是寻找数字1-16所以它永远不会显示数据。

因此我的问题的第一部分是,在我从中进行批量删除后,是否可以让表重新索引?我猜不,但我不知道答案。

如果无法做到这一点,我该如何向应用程序发布更新,我可以在表中添加一列without在添加数据时删除数据?目前我可以增加数据库版本并添加该列,但是当应用程序更新时我将删除所有数据,但我不想这样做

1 个答案:

答案 0 :(得分:1)

根据SQLite的手册here,您可以通过删除sqlite_sequence表中的条目来重新索引您的自动ID字段,如下所示:

delete from sqlite_sequence where name='<Your Table Name Here>';

我自己没有这样做,但它应该有用。

修改

在SQLite的手册中不清楚,只要发生新的插入,就会重新创建表的条目,但是它清楚地表明你可以更新sqlite_sequence。因此,如果删除无法解决您的问题,您可以尝试更新索引,如下所示:

update sqlite_sequence set seq = 0 where name='<Your Table Name Here>';

希望这会有所帮助......