2013-06-03 8 views
20

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

バージョン2.0をリリースする予定で、バージョン1.0のユーザーも更新しました。バージョン2.0では、前の5つのテーブルを持つ余分な2つのテーブルが含まれています。

私の質問は、バージョン1.0のユーザーはすべてローカルデータベースにデータがあります。バージョン2.0に更新すると、以前のデータは失われますか?それならば。代わりの方法は何ですか?

+0

DBアーキテクチャを変更した場合、古いDBは維持できません – thepoosh

+0

@thepooshご回答いただきありがとうございます。私はDBのアーキテクチャを変更していないが、新しい機能でバージョンを更新した場合。その場合は? –

+2

この回答を読んでみてください:http://stackoverflow.com/a/8627242/1056359 – thepoosh

答えて

22

を挿入します。

@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が実行され、データベースのバージョンが以前のバージョンと異なる場合に呼び出されます。

+0

明確にするために、TABLE_SECRETはテーブル名です。 – Rexcirus

1

SQLiteOpenHelper#onUpgradeで何かできますが、古いデータがあります。そしてあなたは、このコードを使用することができますONUPGRADEメソッド内のすべての変更を置くべき新しいテーブルに

2

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

私はこれがあなたに役立つことを願っています。

関連する問題