我正在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
。
答案 0 :(得分:3)
删除一行时,数据库不会更改其ID或其他行中的任何其他数据。该ID仅用于更简单的连接查询和其他内容,因此不得更改。
如果您想要特定订单,则无需使用行ID。数据将按您添加的顺序返回,因此您可以使用它们的订单索引(数据库中的行索引)作为回收站视图索引。
答案 1 :(得分:-1)
如果您的ID是修改了autoincrement
的主键,则id将仅根据当前最大索引递增1。 Db不会重复使用您之前使用过的ID。