如何在Android上的Play商店上传我的应用程序的新版本之前测试升级sqlite数据库

Mau*_*lik 11 java database sqlite android android-sqlite

我发现问题在更新应用版本后,在我上传的应用程序中找不到这样的表"table_name".我在测试后出来我只是在将旧版本的应用程序升级到新版本的应用程序之后才遇到此问题

我所实施的内容

我已经在onUpgrade()方法中完成了代码,并且还在构造函数中升级了db版本,但我无法在设备中对其进行测试.

步骤1) 将版本代码1增加到2

public databasehelper(Context context) {

        super(context, DATABASE_NAME, null, 2);
        this.myContext = context;
        try {
            createDataBase();
            openDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
Run Code Online (Sandbox Code Playgroud)

步骤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);
        }

    }
Run Code Online (Sandbox Code Playgroud)

步骤3) onCreate()方法用于新版本的数据库.

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE_notification_counter); 
        Log.d("oncreate db", ">>>>called");
    }
Run Code Online (Sandbox Code Playgroud)

我有解决方案升级数据库link1 link2 link3 link4

为什么我无法测试它

我们已经在Play商店上传付费应用程序,所以我必须在模拟器或设备中使用两个不同的apk测试db升级方法,这意味着旧版本和更新版本..我已经在设备中第一次使用旧版本然后新版本(db)进行了测试在db)中添加新表的更改但此时不会调用onUpgrade()方法.

题:

1)如何在Play商店更新新版本之前测试db升级?

2)仅在从Play商店更新版本时才会调用?

请帮我解决这个问题.

答案将不胜感激.提前致谢.

Leo*_*dos 5

db 中存储的 db 版本。只需使用比 DbHelper 中的旧版本创建一个 db (db_old)。使用 DbHelper 连接到 db_old,您的 onUpgrade 方法将被调用。

您可以将现有数据库用作 db_old,只需减少它的版本即可。要更改版本,您可以使用任何 sqlite db 编辑器。

如果不想为 DbHelper 编写测试并想模拟应用程序升级,则可以使用adb install -r命令。在这里阅读更多。