现在我的 onUpgrade 方法如下所示:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS questions");
onCreate(db);
}
目前,每当我的应用程序从市场更新时,这都会创建一个新表。
如何防止我的表被删除,并且只在我想要的时候被重新创建或修改?
您应该检查数据库版本。onUpgrade()
仅当当前版本比新版本旧时才执行。检查您的子类的SQLiteOpenHelper
构造函数是否每次都传递相同的参数(最后一个)。在您的情况下,如果您的数据库版本保持不变,则不会重新创建数据库,onUpgrade(
) 将不会被执行。
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
如何防止我的表被删除,并且只在我想要的时候被重新创建或修改?
删除方法的当前主体onUpgrade()
并执行更复杂的升级过程:添加表、删除表、更改表等。
请参阅此解决方案(葡萄牙语):
只需使用所有数据(备份)创建临时表,删除/创建其他数据库表并将临时表数据复制(重新插入)到新结构。一个有效的解决方案,但可能并非在所有情况下都有效。