0

现在我的 onUpgrade 方法如下所示:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS questions");
    onCreate(db);
}

目前,每当我的应用程序从市场更新时,这都会创建一个新表。

如何防止我的表被删除,并且只在我想要的时候被重新创建或修改?

4

3 回答 3

1

您应该检查数据库版本。onUpgrade()仅当当前版本比新版本旧时才执行。检查您的子类的SQLiteOpenHelper构造函数是否每次都传递相同的参数(最后一个)。在您的情况下,如果您的数据库版本保持不变,则不会重新创建数据库onUpgrade() 将不会被执行。

public DBHelper(Context context) {
      super(context, DB_NAME, null, DB_VERSION);
}
于 2013-01-13T20:32:28.120 回答
1

如何防止我的表被删除,并且只在我想要的时候被重新创建或修改?

删除方法的当前主体onUpgrade()并执行更复杂的升级过程:添加表、删除表、更改表等。

于 2013-01-13T20:38:24.313 回答
0

请参阅此解决方案(葡萄牙语):

只需使用所有数据(备份)创建临时表,删除/创建其他数据库表并将临时表数据复制(重新插入)到新结构。一个有效的解决方案,但可能并非在所有情况下都有效。

于 2013-05-19T03:46:37.620 回答