我想更新我的数据库并添加一个新表。所以在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问题的答案相矛盾。
如果我正确读取了您正在从onUpgrade调用onCreate方法的代码。
在方法结束之前,您调用:this.onCreate(db)