从表中删除行及其对_id的影响

时间:2017-01-28 22:18:55

标签: java android sqlite android-sqlite

所以我有这个应用程序,我正在为我的学校项目。它有一个带有自定义arrayadapter的自定义列表视图,并通过单击按钮填充它。这是Room类

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()方法:

@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 + "\";");
}

我的任务是,假设我们有5个房间,room1(id = 0),room2(id = 1)等等。 我删除房间3(#2)将新订单变为0,1,3,4或0,1,2,3。 如果它没有成为0,1,2,3,我怎么能让它运作?如果确实变成了0,1,2,3,那么房间中的_id会改变,还是只会在表格中改变?简而言之,我希望类Room中的_id能够使用表中的id自动调整自身。我怎么做这个工作?

1 个答案:

答案 0 :(得分:0)

当你有一个主键自动递增时,第一个条目将是0然后1个它们2如此更新如果你更新说id在1的行它保持为1.现在让我们说行行被删除,但是哦,你需要重新进去。它将会是2或3,或者在你最后一个身份之后的任何地方。