Android 删除行时重置所有主键字段
在我的android应用程序中,我有一个删除SQLite数据库中一行的方法 代码如下:Android 删除行时重置所有主键字段,android,sqlite,Android,Sqlite,在我的android应用程序中,我有一个删除SQLite数据库中一行的方法 代码如下: public void deleteRow(int id, MyDatabase db, String table) { SQLiteDatabase writableDB = db.getWritableDatabase(); writableDB .delete(table, "_id = ?", new String[] { String.
public void deleteRow(int id, MyDatabase db, String table) {
SQLiteDatabase writableDB = db.getWritableDatabase();
writableDB
.delete(table, "_id = ?", new String[] { String.valueOf(id) });
writableDB.close();
}
当我执行此方法时,该id下的行被删除,其内容保持为空。我需要用下一行替换那一行,以此类推。(重置主键?)帮助?而不是使用数据库进行随机选择。你可以 如果您正在以 ListView:生成一个小于数据源大小的随机数,获取该索引中的元素,从数据源中获取“ID”或“主键”,删除数据库中的记录并更新列表
不使用任何ListView:您可以将主键保存在ArrayList中,生成一个小于ArrayList大小的随机数,并在给定索引处获取“主键”值,然后使用主键删除数据库中的数据并更新ArrayList 如果记录的实际顺序无关紧要,您可以将最后一条记录移动到已删除记录的位置:
db.execSQL(“从“+table+”中删除,其中_id=“+id”);
long lastID=DatabaseUtils.longForQuery(db,“从”+表中选择最大值(_id),null);
如果(lastID>id)
db.execSQL(“更新”+table+”设置_id=“+id+”其中_id=“+lastID”);
我不建议更改主键,因为它是唯一的标识符。
如果要在列表视图中显示数字,请在使用的适配器中;在bindview方法中,游标适配器使用int x=getCursor().getPosition()+1;
获取要使用的视图,并将其设置为在将其转换为字符串后使用x变量…我想这是不可能的。如果你能解释你为什么需要这个。也许我们可以想出一个替代的解决方案。我有一个表,我可以从中使用ID随机选择一些元素。因此,一旦选择了一个元素,它就会被删除,这样就不能再选择它了。当它被删除时,我需要重新创建新的ID。示例:首先我选择元素6,然后它将他从表中删除,下次如果我选择6,我将得到元素7。这就是我需要的。谢谢如果秩序很重要怎么办?这不是问题的重点。如果你有实际问题,问一个新问题。