Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从表中删除行并将其删除';s对_id的影响_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

Java 从表中删除行并将其删除';s对_id的影响

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){

所以我有这个应用程序,我正在为我的学校项目。它有一个带有自定义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){
    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 + "\";");
}