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