Java 从表中删除行并将其删除';s对_id的影响
所以我有这个应用程序,我正在为我的学校项目。它有一个带有自定义arrayadapter的自定义listview,并通过单击按钮填充。这是房间教室Java 从表中删除行并将其删除';s对_id的影响,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,所以我有这个应用程序,我正在为我的学校项目。它有一个带有自定义arrayadapter的自定义listview,并通过单击按钮填充。这是房间教室 public class Room { private int xBtn; private int _id; private int roomImage; private String name; private String type; public Room(String name, String type, int roomImage){
public class Room {
private int xBtn;
private int _id;
private int roomImage;
private String name;
private String type;
public Room(String name, String type, int roomImage){
this.name = name;
this.type = type;
this.roomImage = roomImage;
}
以下是我的DBHandling onCreate()、addRoom()和deleteRoom()方法:
我的任务是,假设我们有5个房间,房间1(id=0),房间2(id=1)等等。
我删除了房间3(#2),新的顺序是0,1,3,4还是0,1,2,3。
如果它没有变成0,1,2,3,我如何才能使它工作?如果它真的变成了0,1,2,3,那么房间里的_id本身也会改变吗?还是只会在表中改变?简言之,我希望教室中的_id能够自动调整自己,并与表中的id保持一致。我该怎么做 当您有一个主键自动递增时,第一个条目将是0,然后是1,然后是2,依此类推,如果您更新id为1的行,它将保持为1。现在让我们假设行被删除了,但是你需要返回。它大约是2或3,或者在您最后一个id之后的任何位置。不,它不是那样工作的。ID是增量的,只向前移动。你不必为此担心。当您有更多与此相关的表时,这是必需的。当您想按名称对列表进行排序时,列表中的ID为3,1,4,0。列表中的位置与ID值无关。是的,它将是1,3,4。。。在某种意义上,它仍然存在。它基本上有一个闪光,说我都用完了去下一个家伙。唯一的方法是自动增加两列,但这取决于你想完成什么
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
String query = "CREATE TABLE " + TABLE_NAME + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_NAME + " TEXT, " +
COLUMN_TYPE + " TEXT " +
");";
db.execSQL(query);
}
public void addRoom(Room room){
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, room.getName());
values.put(COLUMN_TYPE, room.getType());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_NAME, null, values);
db.close();
}
public void removeRoom(String roomsName){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + "=\"" + roomsName + "\";");
}