我想更新我的数据库并添加一个新表。因此,在出现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问题的答案相矛盾。
答案 0 :(得分:0)
如果我正确阅读了代码,则有意从onUpgrade调用onCreate方法。
就在方法结束之前调用:this.onCreate(db)