SQLite删除和重新创建表

时间:2013-01-22 08:40:19

标签: android sqlite sql-drop

如何删除并重新创建包含更新信息的表格?

例如;我的应用程序中有一张表有5条记录。

ID     Entry
1      a
2      b
3      c
4      d
5      e

现在,当我删除一条记录时,表3,表格变为

 ID     Entry
1      a
2      b
4      d
5      e

如何删除它,并重新创建它成为:

  ID     Entry
1      a
2      b
3      d
4      e

实际上删除是由用户控制的,因此任何记录都可以随时删除。

3 个答案:

答案 0 :(得分:13)

您可以执行以下操作:删除要删除的行:

     public boolean deleteRow(int id) 
      {
         return db.delete(YOUR_TABLE, ROW_ID + "=" + _id, null) > 0;
       }

将剩余的条目(只有条目,而不是id)读入ArrayList,删除你的表:

        db.execSQL("DROP TABLE IF EXISTS " + YOUR_TABLE);

并重新创建您的表格。然后ID号将再次从订单中的1-XX

答案 1 :(得分:1)

我知道这是一篇很老的帖子,但我认为我会根据你的评论为其他可能做同样事情的人做好准备:

  

删除记录时,删除过程由当前完成   选择行,因为我只能选择第4行,ID 5永远不会   删除。

你真的不应该重新创建你的ID。如果它们被用作另一个表中的键,它会使事情变得混乱,如果你有一个大型数据库,重新创建它们只会浪费时间,而实际上并不需要。

你应该做的是保存一个id数组以及一个条目数组,这样你就可以根据他们选择的行知道要删除的id(或者链接id和值的其他方式,这样你就可以抓住它们更高版本)。

在上面的示例中,在有人删除ID为3的行后,您的数组将如下所示:

entries = { "a","b","d","e" }
ids = { 1,2,4,5 }

如果有人选择“e”,这是第四项,你只需从表中删除id等于ids数组中的第四个值,在这种情况下为5。

这样,如果不断添加和删除项目,您的数据库最终可能会显示ID 2,34,56和435.这无关紧要,因为您的代码将跟踪并知道要删除的ID。

答案 2 :(得分:0)

另一种方法

public boolean deleteTable(int id) {
    SQLiteDatabase database = dbHelper.getReadableDatabase();
    final String whereClause = DBHelper.COLUMN_ID + "=?";
    final String whereArgs[] = {String.valueOf(id)};
    int affectedRows = database.delete(DBHelper.TABLE_NAME_OGR, whereClause, whereArgs);
    return affectedRows > 0;
}