如何删除并重新创建包含更新信息的表格?
例如;我的应用程序中有一张表有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
实际上删除是由用户控制的,因此任何记录都可以随时删除。
答案 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;
}