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

Androidでデータベースと言えばSQLiteです。 SQLiteを使うには、SQLiteOpenHelperを使ってDBを開くと思いますが、開発を続けていくとColumnを追加したりする必要が出てきます。 SQLiteOpenHelperを使っていると、onUpgradeでDBを更新することができますが、正しい更新方法はどうするのが良いのでしょうか。 ## ベストな方法 ```java `gutter:true; @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されていきます。 ### よくない方法 ```java `gutter:true; @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 [ここのサイト](https://thebhwgroup.com/blog/how-android-sqlite-onupgrade)が参考になりました。 他にも悪い方法(Bad Example)が紹介されています。

0 件のコメント :

コメントを投稿