Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite在升级时添加新表_Android_Android Sqlite - Fatal编程技术网

Android SQLite在升级时添加新表

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

我想更新我的数据库并添加一个新表。所以在下面的问题中,我已经将我的数据库从版本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);
    }
@覆盖
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的警告:“我们不建议删除带有答案的问题”。你介意删除你的答案吗?我也不会删除的。只需“投票删除它”。我不知道这个投票系统是怎么运作的。