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