上一次我在PlayStore上得到了一些奇怪的评论。
为什么在安装我的应用程序更新后,用户会抱怨他们的所有应用程序数据都已被删除。我完全不知道这是怎么发生的。只有在表不存在时才会重新创建数据库。
打开数据库连接后执行的代码:
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.......");
}
}
有人有想法吗?谢谢:))
答案 0 :(得分:1)
我认为您不会将您的数据从旧数据库“重写”为新数据库。
Android: upgrading DB version and adding new table
检查此链接,如果这是您的问题,那么如果可能,您可以将每个版本的数据传输到新版本,一切都会好的。您必须记住设计数据库和数据流以记住旧用户可能缺少某些数据,因此新数据库中的某些数据可以为空