Android SQLite добавляет новую таблицу при обновлении - PullRequest
0 голосов
/ 02 сентября 2018

Я хотел бы обновить свою базу данных и добавить новую таблицу. Итак, следуя этому вопросу Stackoverflow , я увеличил свою базу данных с версии 1 до версии 2. Затем в onUpgrade я написал код для добавления новой таблицы и вставки данных:

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion < 2) {
            String CREATE_B_TABLE = "CREATE TABLE IF NOT EXISTS b ( " +
                    "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    "qset TEXT, "+
                    "highscore TEXT )";
            db.execSQL(CREATE_B_TABLE);

            String ADD_B = "INSERT INTO b ( qset ) VALUES ('1B'), ('2B'), ('3B'), ('4B'), ('5B'), ('6B'), ('7B'), ('8B'), ('9B'), ('10B')";
            db.execSQL(ADD_B);
        }
        this.onCreate(db);
    }

Я также поместил тот же код в onCreate для обслуживания новых пользователей.

Однако при обновлении приложения произошло нечто странное. Add_B вставляется дважды в таблицу, поэтому у меня дублируются данные. Если я удалил код в onUpgrade, новая таблица будет добавлена ​​без дублирования. Кажется, что onCreate вызывается при обновлении приложения, что противоречит ответу на другой вопрос stackoverflow.

1 Ответ

0 голосов
/ 02 сентября 2018

Если я правильно прочитал код, вы намеренно вызываете метод onCreate из своего onUpgrade.

Непосредственно перед завершением метода вы вызываете: this.onCreate (db)

...