web-dev-qa-db-ja.com

Android SQLiteデータベースとアプリのアップデート

Androidアプリを開発し、バージョン1.0をリリースしました。アプリには5つのテーブルを持つSQLiteローカルデータベースが含まれています。

現在、バージョン2.0をリリースし、バージョン1.0のユーザーも更新する予定です。バージョン2.0では、以前の5つのテーブルに2つのテーブルが追加されたため、現在は7つのテーブルになっています。

今私の質問は、バージョン1.0のユーザーはすべてローカルデータベースにいくつかのデータを持っています。彼がバージョン2.0に更新すると、以前のデータは失われますか?もしそうなら。では、別の方法は何ですか?

21
Rajesh Rajaram

このコードを使用できるonUpgradeメソッドにすべての変更を加える必要があります。

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String sql = "ALTER TABLE " + TABLE_SECRET + " ADD COLUMN " +
     "name_of_column_to_be_added" + " INTEGER";
    db.execSQL(sql);        
}        

これにより、現在のデータベースに列が追加されます。データベースがデータを失うことはありません。注意:onUpgradeは、getWriteableDatabaseまたはgetReadableDatabaseが実行され、データベースのバージョンが以前のバージョンと異なる場合に呼び出されます。

23
codebringer

データベースのバージョンを変更し、onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion)メソッドに2つのテーブル作成メソッドを追加します。これで、以前のデータが失われることはありません。

これがお役に立てば幸いです。

2
Gunaseelan

SQLiteOpenHelper#onUpgradeでいくつか実行し、古いデータを取得できます。新しいテーブルに挿入します

1
Crossle Song