タイトルにあるように、インストール数が約1000の本番Androidアプリがあります。SQLiteでDBを変更する必要がありました。これまで、SQLiteDBのバージョンはバージョン「1」に設定されていました。
うまくいけば、コメントで以下のコードを十分に説明します。このコードは私のSQLiteOpenHelperクラスに存在するため、onUpgradeメソッドはクラスの一部です。
// Provides an upgrade path for the DB when the apps version is updated.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// First version of the DB was 1. Logic: each if statement will
// alter the DB cumulatively based on the version code. So, if the
// newVersion was version 3, there would be two if statements, one
// for oldVersion 1 and one for oldVersion 2. oldVersion 2 will
// contain the logic for upgrading from version 2 to 3, while
// oldVersion 1 will contain a combination of alter statements
// allowing the database to upgrade from version 1 directly to
// version 3.
if (oldVersion == 1) {
db.execSQL("ALTER TABLE plans ADD COLUMN " + App.CURRENCYCODE
+ " TEXT");
Locale locale = Locale.getDefault();
ContentValues content_values = new ContentValues();
content_values.put(App.CURRENCYCODE, locale.toString());
db.update(App.DBPLANS, content_values, App.ID + " > ?", new String[] {
"0"
});
}
if (oldVersion == 2) {
// Placeholder for next database upgrade instructions.
}
}
ここに落とし穴があれば教えてください。これまでのところ、正常にテストされていますが、最初のDBアップグレードを台無しにすることを非常に心配しています。私には1,000人ほどのユーザーがいるので、すべてを失いたくありません。
再度、感謝します!