Android SQLite在升级时添加新表

时间:2018-09-02 01:18:58

标签: android android-sqlite

我想更新我的数据库并添加一个新表。因此,在出现this 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 :(得分:0)

如果我正确阅读了代码,则有意从onUpgrade调用onCreate方法。

就在方法结束之前调用:this.onCreate(db)