Android SQLite在升级时添加新表

问题描述 投票:0回答:1

我想更新我的数据库并添加一个新表。所以在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问题的答案相矛盾。

android android-sqlite
1个回答
0
投票

如果我正确读取了您正在从onUpgrade调用onCreate方法的代码。

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

© www.soinside.com 2019 - 2024. All rights reserved.