1. onCreate() と onUpdate() について
onCreate(..) は、アプリが新しくインストールされるたびに呼び出されます。onUpgrade は、アプリがアップグレードされて起動され、データベースのバージョンが同じでない場合に呼び出されます。
次のようなコンストラクタが必要です。
2. db バージョンのインクリメント
MyOpenHelper(Context context) {
super(context, "dbname", null, 2);
}
重要: onUpgrade を呼び出すには、アプリのバージョンを増やすだけでは不十分です。
3. 新しいユーザーのことを忘れないでください!
追加することを忘れないでください
database.execSQL(DATABASE_CREATE_color);
onCreate() メソッドに追加しないと、新しくインストールされたアプリにテーブルがありません。
4. 時間の経過とともに複数のデータベースの変更に対処する方法
アプリのアップグレードが連続しており、そのうちのいくつかにデータベースのアップグレードがある場合は、必ず oldVersion を確認する必要があります。
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 1:
db.execSQL(DATABASE_CREATE_color);
// we want both updates, so no break statement here...
case 2:
db.execSQL(DATABASE_CREATE_someothertable);
}
}
このようにして、ユーザーがバージョン 1 からバージョン 3 にアップグレードすると、両方の更新が取得されます。ユーザーがバージョン 2 から 3 にアップグレードすると、リビジョン 3 の更新プログラムを取得するだけです... 結局、更新をリリースするたびに、ユーザー ベースの 100% がアップグレードされるとは期待できません。更新または12をスキップすることがあります:)
うまくいけば、これは理にかなっています。
5. 開発中にリビジョン番号を管理する
そして最後に...呼び出し
adb uninstall <yourpackagename>
アプリを完全にアンインストールします。再度インストールすると、onCreate メソッドをヒットすることが保証されます。これにより、データベースのバージョンを成層圏にインクリメントし続ける必要がなくなります...