私はすべてのアプリで SQLiteOpenHelper (以下に示す) を使用しており、静かに満足しています。長年にわたり、既存のデータベースへの多くのアップグレードが成功裏に終了しました。
今回は、アプリの 1 つでデータベースをアップグレードする必要があり、この手順はしばらく続きます。したがって、これらのアップグレード ステートメントを独自のスレッドに配置する必要があります。
そうするのに最適な場所はどこですか?
どんな助けでも大歓迎です。
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
protected static final Object lock = new Object();
private static final int DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 3;
private Context context;
private SQLiteDatabase database;
public MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase database) {
synchronized (lock) {
this.database = database;
// Create database statements
}
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
synchronized (lock) {
this.database = database;
switch (newVersion) {
case DATABASE_VERSION:
switch (oldVersion) {
case 1:
upgradeFrom1To2();
case 2:
upgradeFrom2To3();
}
break;
}
}
}
private void upgradeFrom1To2() {
// Upgrade database statements
}
private void upgradeFrom2To3() {
// Upgrade database statements
}
}