Android用户抱怨更新后应用数据丢失

时间:2017-08-13 15:38:14

标签: android

上一次我在PlayStore上得到了一些奇怪的评论。

enter image description here

为什么在安装我的应用程序更新后,用户会抱怨他们的所有应用程序数据都已被删除。我完全不知道这是怎么发生的。只有在表不存在时才会重新创建数据库。

打开数据库连接后执行的代码:

private void createTablesIfNotExist() {
    //query tables
    Cursor c = DatabaseManager.executeSelect("SELECT name FROM sqlite_master WHERE type = \"table\"");

    //if tables already created, do nothing (+1 because of header table)
    if (!((tableAmount + 1) == c.getCount())) {
        //meta data table
        this.database.execSQL("DROP TABLE IF EXISTS android_metadata;");
        this.database.execSQL("CREATE TABLE android_metadata (locale TEXT);");
        this.database.execSQL("INSERT INTO android_metadata VALUES('de_DE');");
    }

    //create event table
    c = DatabaseManager.executeSelect("SELECT name FROM sqlite_master WHERE name = \"" + EVENTS + "\"");
    c.moveToFirst();

    if(c.isAfterLast()) {
        this.database.execSQL("CREATE TABLE.....");
    }

    c = DatabaseManager.executeSelect("SELECT name FROM sqlite_master WHERE name = \"" + ASSIGNED_PRODUCTS + "\"");
    c.moveToFirst();

    if(c.isAfterLast()) {
        this.database.execSQL("CREATE TABLE.......");
    }

}

有人有想法吗?谢谢:))

1 个答案:

答案 0 :(得分:1)

我认为您不会将您的数据从旧数据库“重写”为新数据库。

Android: upgrading DB version and adding new table

检查此链接,如果这是您的问题,那么如果可能,您可以将每个版本的数据传输到新版本,一切都会好的。您必须记住设计数据库和数据流以记住旧用户可能缺少某些数据,因此新数据库中的某些数据可以为空