[Android] SQLiteのアップデート方法 (onUpgrade)

Androidでデータベースと言えばSQLiteです。
SQLiteを使うには、SQLiteOpenHelperを使ってDBを開くと思いますが、開発を続けていくとColumnを追加したりする必要が出てきます。
SQLiteOpenHelperを使っていると、onUpgradeでDBを更新することができますが、正しい更新方法はどうするのが良いのでしょうか。

ベストな方法

1
2
3
4
5
6
7
8
9
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
         db.execSQL("ALTER TABLE ....");
    }
    if (oldVersion < 3) {
         db.execSQL("ALTER TABLE ....");
    }
}

oldVersionとnewVersionを比べる必要はなく、古いバージョンであれば新しくなっていく順番に"ALTER TABLE"がCallされていきます。

よくない方法

1
2
3
4
5
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 1 && newVersion == 2)
         db.execSQL("ALTER TABLE ....");
}

私のメンテナンスしているアプリでは上記の方法でUpgradeしていました。
1回しかTableを更新しないのであれば良いですが、versionが1から3にアップする時には3行目が実行されません。

参考URL

ここのサイトが参考になりました。
他にも悪い方法(Bad Example)が紹介されています。

0 件のコメント :

コメントを投稿