在我的应用程序中,我可以选择让用户完全重置应用程序(删除他们设置的所有数据/首选项),这样我们在选择重置时所做的就是在ContentProvider
<中删除所有内容/ p>
例如
getActivity().getContentResolver().delete(CalEvents.CONTENT_URI, null, null);
这样做我认为现在正在清理的数据库会将id计数器返回到1,但显然并非如此
问题是我的一个表使用数据库标识1-16
来查找数据但是当该表被删除时,该数据库的下一个插入将是17-33
,这会导致问题,因为我是寻找数字1-16所以它永远不会显示数据。
因此我的问题的第一部分是,在我从中进行批量删除后,是否可以让表重新索引?我猜不,但我不知道答案。
如果无法做到这一点,我该如何向应用程序发布更新,我可以在表中添加一列without
在添加数据时删除数据?目前我可以增加数据库版本并添加该列,但是当应用程序更新时我将删除所有数据,但我不想这样做
答案 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>';
希望这会有所帮助......