編集: 私のデータベースには 2 つのテーブルがあります。1 つのテーブルは、更新後に保存および復元する必要があるユーザー データです。もう 1 つのテーブルは、更新のたびに assets フォルダーから読み込まれる定数データです。
したがって、データベースをアップグレードするときは、最初にテーブル 1 を外部データベースに保存します。次に、「定数」テーブルを使用してデータベースを上書きしcopyDataBase();
、保存したテーブルをコピーして戻します。
データベースをコピーする前に、データベースを閉じる必要があります。そうしないと、データが奇妙になります。私はいつも
close() was never explicitly called on database '/data/data/com.myproject/databases/mdb.sqlite'
openOrCreateDatabase が呼び出される場所。私は前に近いと呼んだので、それは奇妙です。私に何ができる?
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
}
ありがとうEuribor