Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Java 来自SQLite的数据在应用程序更新时丢失_Java_Android_Database_Sqlite_Updating - Fatal编程技术网

Java 来自SQLite的数据在应用程序更新时丢失

Java 来自SQLite的数据在应用程序更新时丢失,java,android,database,sqlite,updating,Java,Android,Database,Sqlite,Updating,我的应用程序更新有问题。 所有用户设置都保存在键值表内的SQLite DB中。之前,我将设置保留在共享首选项中,但在更新时,它们被删除了。 由于数据库在更新时是安全的,所以我移动了数据库中的所有设置,一切正常。但并非总是如此。大多数更新时间,所有数据都会丢失。 如果先前删除了所有“数据”文件夹,现在只删除数据库。尽管从未调用过onUpgrade方法。在Android清单中,Android:allowBackup=true和Android:fullBackupContent=@xml/backup

我的应用程序更新有问题。 所有用户设置都保存在键值表内的SQLite DB中。之前,我将设置保留在共享首选项中,但在更新时,它们被删除了。 由于数据库在更新时是安全的,所以我移动了数据库中的所有设置,一切正常。但并非总是如此。大多数更新时间,所有数据都会丢失。 如果先前删除了所有“数据”文件夹,现在只删除数据库。尽管从未调用过onUpgrade方法。在Android清单中,Android:allowBackup=true和Android:fullBackupContent=@xml/backup\u描述符

这是我的备份描述符文件:

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <include domain="database"
    path="." />
    <include domain="sharedpref"
             path="." />
</full-backup-content>
我试图通过adb、文件管理器甚至游戏市场安装应用程序。在每种情况下都有以下情况: 例如,我安装了AppV8,做了一些更改,这些更改就被保存了。然后我将我的应用程序更新到v9,不打开它,我去检查DB文件是否存在,它们是否不存在

我真的不明白为什么会这样,我希望你能帮助我。 我试图在Stackoverflow上找到类似的内容,但常见的问题是如何在更新时删除数据,而我无法保存它:

UPD:我知道什么时候需要使用onUpgrage方法,并且我知道它是如何工作的。但我不明白为什么系统会清除我设备上的数据。我试着用相同的设备和操作系统版本在模拟器上测试,我的设备是Nexus 5x,问题没有出现。为什么? 我为语法问题道歉,我不太懂英语

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
         db.execSQL(DATABASE_ADD_COLUMN_!);
    }
    if (oldVersion < 3) {
         db.execSQL(DATABASE_ADD_COLUMN_2);
    }
}
我发现本教程对SQlite升级最有帮助

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
         db.execSQL(DATABASE_ADD_COLUMN_!);
    }
    if (oldVersion < 3) {
         db.execSQL(DATABASE_ADD_COLUMN_2);
    }
}