我正在 Android Studio 中研究数据库的结构。我还没有处于测试阶段,但是了解其工作原理的较小细节将使我能够尽早编写更好的结构。不幸的是,有一个我不确定的小元素已被证明很难在网上找到。
我创建一个 SQLiteDatabase
,并使用它来存储我在名为 Task
的类中表示的值。当我将每个 Task
输入数据库时,我还会检索 Id 以存储到本地容器 newTask
中,使用 newTask.SetId(mTaskDataSource.Create(newTask) )
。我最终使用 SQLiteDatabase
跨 session 存储任务,并使用 RecyclerView
在 Activity 中显示列表。这意味着我必须跟踪 SQLiteDatabase
和 RecyclerView
中的元素位置。
如果我删除数据库中的一个元素,连续的元素 ID 会“向下级联”,还是会保留其原始值?如果需要示例,请考虑我的数据库存储元素并显示 ID。如果我从 {0, 1, 2, 3}
开始,并删除元素 2
,我的数据库会将其 Id 平衡回 {0, 1, 2 }
,或者我会有 {0, 1, 3}
?
当我致力于实现平衡的假设时 ({0, 1, 2}
),我意识到我可能会为自己设定很多目标如果我的假设是错误的,就会有额外/多余的工作。如果它不能以这种方式平衡,是否有一种相当便宜的方法来做到这一点?
我想问 ID 号是否会自行重新平衡。这与询问身份证号码的实际用途不同,也不是对我的问题有任何有效用途的重复问题。 我具体询问的是SQLiteDatabase
,不是通用适配器
。
最佳答案
删除一行时,数据库不会更改其 ID 或其他行中的任何其他数据。 ID只是为了方便连接查询等,所以不能更改。
如果您想要有特定的顺序,则不需要使用行 ID。数据会按照您添加的顺序返回,因此您可以使用它们的顺序索引(数据库中的行索引)作为回收器 View 索引。
关于java - 从 SQLiteDatabase 中删除一个元素是否会反射(reflect)其他元素 ID 的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866296/