编辑:我的数据库有 2 个表。一张表是更新后需要保存和恢复的用户数据。另一个表是常量数据,每次更新时都会从 assets 文件夹中加载。
因此,当我升级数据库时,我首先将表一保存到外部数据库。然后我用“常量”表覆盖数据库copyDataBase();
,然后将保存的表复制回来。
在我复制数据库之前,我需要关闭它,否则数据很奇怪。我总是得到一个
close() was never explicitly called on database '/data/data/com.myproject/databases/mdb.sqlite'
调用 openOrCreateDatabase 的位置。这很奇怪,因为我之前打电话给 close 。我能做些什么?
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion) {
//save db tables to other db ...
db.close();
copyDataBase();
db = SQLiteDatabase.openOrCreateDatabase(databaseFile, null);
//... save back to db
}
谢谢欧里博尔