从SQLiteDatabase中删除元素是否反映了其他元素的ID的变化?

时间:2016-10-05 05:49:50

标签: java android sqlite

我正在Android Studio中研究数据库的结构。我还没有进入测试阶段,但是了解其工作原理的细节将使我能够尽快写出更好的结构。不幸的是,有一个不确定的小元素已经证明在网上很难找到。

我创建了一个SQLiteDatabase,并使用它来存储我在名为Task的类中表示的值。当我将每个Task输入数据库时​​,我还会使用newTask检索要存储到我的本地容器newTask.SetId(mTaskDataSource.Create(newTask))中的ID。我最终使用SQLiteDatabase在会话中存储我的任务,并使用RecyclerView显示活动中的列表。这意味着我必须跟踪SQLiteDatabase RecyclerView中的元素位置。

如果我删除数据库中的元素,连续元素ID会“向下级联”,还是会保持原始值?如果需要示例,请考虑我的数据库存储元素,并显示ID。如果我从{0, 1, 2, 3}开始,并删除元素2,我的数据库会将其ID重新调整为{0, 1, 2},还是会{0, 1, 3}

当我正在使用假设来平衡它({0, 1, 2})时,我意识到如果我的假设,我可能会为很多额外/冗余工作做好准备错了。如果没有以这种方式平衡,是否有一种相当便宜的方式呢?

我在询问身份证号码是否会自行重新平衡。这与询问ID号实际上是什么不同,也不是我的问题的任何有效用途的重复问题。 我特别询问SQLiteDatabase不是通用Adapter

2 个答案:

答案 0 :(得分:3)

删除一行时,数据库不会更改其ID或其他行中的任何其他数据。该ID仅用于更简单的连接查询和其他内容,因此不得更改。

如果您想要特定订单,则无需使用行ID。数据将按您添加的顺序返回,因此您可以使用它们的订单索引(数据库中的行索引)作为回收站视图索引。

答案 1 :(得分:-1)

如果您的ID是修改了autoincrement的主键,则id将仅根据当前最大索引递增1。 Db不会重复使用您之前使用过的ID。