【问题标题】:How can I restart auto increment ID from 1 in an Android SQLite Database如何在 Android SQLite 数据库中从 1 重新启动自动增量 ID
【发布时间】:2011-09-07 19:32:03
【问题描述】:

我有一个 Android SQLite 数据库,我插入了一些行。删除这些行后,ID 列从最后一个 ID 继续,我想从 1 重新开始计数。

【问题讨论】:

  • 我知道这不是你问的,但为什么要让自己头疼呢?实际的自动生成的值没有任何意义,大概如果你删除了行,你也删除了所有相关的行,那么为什么要在 1 处重新开始呢?
  • SQLite Reset Primary Key Field 的可能重复项
  • 现在我意识到即使不从 1 开始 ID 计数也可以解决问题。谢谢。

标签: java android database sqlite


【解决方案1】:

在您的 .db 文件中有一个名为 sqlite_sequence 的表

每行有两列 'name' 是表的名称 'seq' 一个整数,表示该表的当前最后一个值

您可以将其更新为 0

但请注意,如果您的表使用此 id 作为唯一标识符。

看看这个答案:SQLite Reset Primary Key Field

【讨论】:

    【解决方案2】:

    试试:

    delete from sqlite_sequence where name='your_table';
    

    【讨论】:

      【解决方案3】:

      如果你想通过内容提供者重置每个 RowId,试试这个

          rowCounter=1;do {           
              rowId = cursor.getInt(0);
              ContentValues values;
              values = new ContentValues();
              values.put(Table_Health.COLUMN_ID,
                         rowCounter);
              updateData2DB(context, values, rowId);
              rowCounter++;
      
          while (cursor.moveToNext());
      
      public static void updateData2DB(Context context, ContentValues values, int rowId) {
      Uri uri;
      uri = Uri.parseContentProvider.CONTENT_URI_HEALTH + "/" + rowId);
      context.getContentResolver().update(uri, values, null, null);
      

      }

      【讨论】:

        猜你喜欢
        • 2016-03-19
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 2018-01-22
        相关资源
        最近更新 更多