【问题标题】:SQL Lite database inserting data to the beginning after deleting all dataSQL Lite数据库在删除所有数据后将数据插入到开头
【发布时间】:2014-12-28 11:30:16
【问题描述】:

SQL Lite Database: Android Programming 从之前的 youtube 视频中,我了解了基本的 SQL lite 数据库。 我想问那个 在我们清除数据后,然后您将新数据添加到数据库中 但 id 不会重置为开头。数据只是根据之前未清除的数据添加到下一行。 我可以在清除数据后添加到开始行吗?谢谢!

【问题讨论】:

  • 如果 ID 是自动递增的,那么删除记录不会重置 ID,要么维护您自己的 ID,要么您需要完全删除架构以重新开始计数。我不确定你的问题(基于教程)所以不回答而是把它放在 cmets 中。
  • 如果你关心这个,你应该创建和维护你自己的 ID 列。
  • 您将了解到 ID 不是位置指示符(即:它不会对应于 ListView 项),而是一个...标识符(如您的身份证:它是一个唯一代码)。当您处理相关表(也就是说,您将规范化您的数据库)时,您会明白最好不要乱用ID - 为了不让孤儿留在另一张桌子上。
  • 不清楚您数据库中的 ID 代表什么或您想要实现什么。请编辑您的问题以提供更多详细信息。

标签: android sql database


【解决方案1】:

是的,您可以这样做。 不,你不应该)

使用数据库是一种常见的做法,只是让它自动递增,以后不再关心这个。 如果你真的需要这样做,你可以下一步:

  1. 不要将自动增量修饰符放在 ID 行上;
  2. 下次您想在表中插入数据时,您应该找出哪些 ID 是空的。将您的记录放入这些 id 中。如果您仍有要插入的记录,则应将其放在表格的末尾。

我真的建议您保持原样。 我看不到手动查找表中的空白并在此处输入值的任何好处。但是以后你的代码很难支持。

更新:

当您查询显示一些数据时。您只需获取所有可用记录(或其中的一部分,取决于您的应用程序逻辑)并将其显示给用户。 Like delete the last row and update it 不懂这个。如果您删除它->它将被删除。并且下次创建行将到达最后一个位置。

基本思想在这里:按原样显示数据。您获取所有记录并将它们显示在列表(表格或其他一些 UI 视图)中。因此,当您创建行时,只需将其添加到列表的末尾(当然您可以插入它然后重新加载您的视图)。

【讨论】:


  • 我想这样做的原因是我想把它做成一个excel文件,以便轻松地存储数据并在某些地方访问它们。一旦我不需要它们,我需要删除它们并重新开始。另外,如果我想更新一些行的数据怎么办?就像删除最后一行并更新它。更新后的数据会添加到下一行吗?
【解决方案2】:

看起来与较早的帖子有关。 SQL Lite 为序列 ID 维护一个单独的元数据表 sqlite_sequence。解决方案是从该表中删除您的表名条目。

SQLite Reset Primary Key Field

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 2012-11-29
    • 2021-04-08
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2018-01-15
    • 2014-07-09
    相关资源
    最近更新 更多