
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 件のコメント :
コメントを投稿