Java 从SQLiteDatabase中删除元素是否反映了其他元素ID的更改?

Java 从SQLiteDatabase中删除元素是否反映了其他元素ID的更改?,java,android,sqlite,Java,Android,Sqlite,我正在Android Studio中为数据库的结构工作。我还没有处于测试阶段,但了解它如何工作的较小细节将允许我尽早编写更好的结构。不幸的是,有一个我不确定的小元素已经证明很难在网上找到 我创建了一个SQLiteDatabase,并使用它来存储我在名为Task的类中表示的值。当我将每个任务输入到数据库中时,我还使用newTask.SetId(mtaskdasource.Create(newTask))检索要存储到本地容器中的Id。我最终使用SQLiteDatabase跨会话存储任务,并使用Rec

我正在Android Studio中为数据库的结构工作。我还没有处于测试阶段,但了解它如何工作的较小细节将允许我尽早编写更好的结构。不幸的是,有一个我不确定的小元素已经证明很难在网上找到

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

如果我删除数据库中的一个元素,连续的元素ID是“级联”的,还是保持原来的值?如果需要一个示例,请考虑我的数据库存储元素,并显示IDS。如果我从
{0,1,2,3}
开始,并删除元素
2
,我的数据库会将其ID平衡回
{0,1,2}
,还是会有
{0,1,3}

当我在工作时假设它是平衡的(
{0,1,2}
),我意识到如果我的假设是错误的,我可能会为自己安排很多额外/冗余的工作。如果它不能以这种方式平衡,是否有一种合理的廉价方法


我在问身份证号码是否会自我平衡。这与询问身份证号码的实际用途不同,重复的问题对我的问题也没有任何有效的用途我是针对
SQLiteDatabase
,而不是一般的
适配器

请求的。删除一行时,数据库不会更改其ID或其他行中的任何其他数据。ID只是为了方便连接查询和其他事情,所以不能更改它


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

删除一行时,数据库不会更改其ID或其他行中的任何其他数据。ID只是为了方便连接查询和其他事情,所以不能更改它


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

如果您的ID是带有
自动增量
修改的主键,id将仅根据当前最大索引增加1。Db不会重用您以前使用过的ID。

如果您的ID是修改了
autoincrement
的主键,则ID将仅根据当前的最大索引增加1。数据库不会重用您以前使用过的ID。

看,数据库不会为您更改任何内容,您使用的是ORM吗?您是否使用任何类型的数据绑定?如果是这样,它可能会更改您的数据(尽管大多数形式的ORM在您调用.save()之前不会更改任何内容)。将代码放在显示删除行的位置以及添加或更新数据的方式。如果您希望获得特定的顺序,则不需要使用行ID,数据将按添加顺序返回,以便您可以使用其顺序索引(以DB为单位的行索引)作为recyclerView索引。为了澄清我的评论,“数据库肯定不会更改其ID”没有说明“是的,它有”或“不,它没有”;它说“应该”“我在寻找一个知己的回答,而不是另一个离经叛道的回答。”。我确实提供了添加行的代码,如前所述,我的大多数数据库类结构将根据答案而有所不同,包括如何删除和更新rows.tnx以进行编辑@Timelord64。但愿我能帮上忙;)听着,DB不会为你改变任何东西,你在用ORM吗?您是否使用任何类型的数据绑定?如果是这样,它可能会更改您的数据(尽管大多数形式的ORM在您调用.save()之前不会更改任何内容)。将代码放在显示删除行的位置以及添加或更新数据的方式。如果您希望获得特定的顺序,则不需要使用行ID,数据将按添加顺序返回,以便您可以使用其顺序索引(以DB为单位的行索引)作为recyclerView索引。为了澄清我的评论,“数据库肯定不会更改其ID”没有说明“是的,它有”或“不,它没有”;它说“应该”“我在寻找一个知己的回答,而不是另一个离经叛道的回答。”。我确实提供了添加行的代码,如前所述,我的大多数数据库类结构将根据答案而有所不同,包括如何删除和更新rows.tnx以进行编辑@Timelord64。但愿我能帮上忙;)@我已经对我的问题做了澄清。与“身份证的用途”非常明显不同。我不会给出一个没有帮助的答案(“否”),因为这个问题。您实际的问题是“在
SQLiteDatabase
RecyclerView
中跟踪元素的位置”,链接的答案显示了正确的方法。@CL.,我认为我们在理解彼此时有些困难。回答问题而不是关注上下文有很大帮助。关于你链接的问题,大多数答案只是告诉我ID是什么,以及我们为什么使用它。我已经知道这一点,因为这是核心数据库机制。这对我理解如何为删除的行抵消ID毫无帮助;但是,由于它只讨论
适配器
类,其中
SQLiteDatabase
只是t