Android SQLite在升级时添加新表
我想更新我的数据库并添加一个新表。所以在下面的问题中,我已经将我的数据库从版本1增加到了版本2。然后在Android SQLite在升级时添加新表,android,android-sqlite,Android,Android Sqlite,我想更新我的数据库并添加一个新表。所以在下面的问题中,我已经将我的数据库从版本1增加到了版本2。然后在onUpgrade中,我编写了添加新表和插入数据的代码: @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { String CREATE_B_TABLE = "CREATE TABL
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);
}
@覆盖
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
如果(旧版本<2){
String CREATE_B_TABLE=“如果不存在,则创建表B(”+
\u id整数主键自动递增+
“qset文本,”+
“高分文本”;
execSQL(创建表);
字符串ADD_B=“插入B(qset)值('1B')、('2B')、('3B')、('4B')、('5B')、('6B')、('7B')、('8B')、('9B')、('10B')”;
db.execSQL(ADD_B);
}
这个.onCreate(db);
}
我还在onCreate
中添加了相同的代码,以满足新用户的需求
然而,在升级应用程序时发生了一些奇怪的事情。
Add_B
被插入到表中两次,因此我有重复的数据。如果我删除了onUpgrade
中的代码,则添加的新表不会重复。升级应用程序时,似乎调用了onCreate
,这与另一个stackoverflow问题的答案相矛盾。如果我正确阅读了代码,您会故意从onUpgrade调用onCreate方法
在方法结束之前,您可以调用:this.onCreate(db)谢谢。我犯了一个多么愚蠢的错误。我试图删除此问题,但收到stackoverflow的警告:“我们不建议删除带有答案的问题”。你介意删除你的答案吗?我也不会删除的。只需“投票删除它”。我不知道这个投票系统是怎么运作的。