更新应用程序版本后,我在上传的应用程序中找不到此类表“table_name”。我在测试后出来了我只有在将旧版本的应用程序升级到新版本的应用程序后才会遇到这个问题
我实施了什么
我已经在 onUpgrade() 方法中完成了代码,并且还在构造函数中升级了 db 版本,但我无法在设备中对其进行测试。
step 1) 增加版本号1到2
public databasehelper(Context context) {
super(context, DATABASE_NAME, null, 2);
this.myContext = context;
try {
createDataBase();
openDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
步骤 2)将新表添加到onUpgrade()方法中
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e("onUpgrade db", ">>>>called");
switch (oldVersion) {
case 1:
db.execSQL(DATABASE_CREATE_notification_counter);
Log.e("db version", ">>>"+oldVersion);
// we want both updates, so no break statement here...
case 2:
Log.e("db version", ">>>"+oldVersion);
// I removed onCreate() method from here because new version will already have the new table
// onCreate(db);
}
}
步骤 3)新版本数据库的 onCreate() 方法。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_notification_counter);
Log.d("oncreate db", ">>>>called");
}
为什么我无法测试它
我们已经在 Play 商店上传了付费应用程序,所以我必须在模拟器或设备中使用两种不同的 apk 测试 db 升级方法,这意味着旧版本和新版本。我已经在设备中第一次使用旧版本和新版本进行了测试(db在 db 中添加新表进行更改)但此时不会调用 onUpgrade() 方法。
问题:
1) 如何在 Play 商店更新新版本之前测试 db upgrade?
2)仅当您仅从 Play 商店更新版本时才会调用它?
请帮我解决这个问题。
答案将不胜感激。提前致谢。