ユーザ用ツール

サイト用ツール


既存のデータを引き継ぎつつdbスキーマを変更する方法

以前のリビジョンの文書です


方法

SQLiteOpenHelper#onUpgradeをコールさせ、onUpgrade内で任意のクエリを実行する。
onUpgradeをコールするには、コンストラクタに引き渡すDBバージョンを引き上げます。

SQLiteOpenHelperの実装例

仕様変更によりカラムが増えた例
テーブルfooにカラムageを追加し初期値として0を設定する
ALTER TABLE foo ADD COLUMN age INTEGER DEFAULT 0
public class DatabaseHelper extends SQLiteOpenHelper { / * DB ver * DBスキーマを変更した場合、インクリメントする * * +++++ 変更履歴 +++++ * v1 : ….. 20150101 t.sou * v2 : * …. */ public static final int DB_VERSION = 1; public static final String TABLE_NAME = “foo”; / * コンストラクタ * アプリが保持しているDBバージョンと異なるバージョンが渡された場合、 * onUpgrade()またはonDowngradeが呼ばれる。 */ public DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { final String sql = “CREATE TABLE ”+TABLE_NAME+“(” +“id INTEGER PRIMARY KEY AUTOINCREMENT, ” +“name TEXT” +“);”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(newVersion > oldVersion) { switch(newVersion) { case 2: db.execSQL(“ALTER TABLE ”+TABLE_NAME+“ ADD COLUMN age INTEGER NOT NULL DEFAULT 0”); } } } } ■参考URL ・Android SQLiteデータベースのテーブル変更はこうやる http://begirama.hatenablog.com/entry/2012/08/04/090723 ・How to add new Column to Android SQLite Database? http://stackoverflow.com/questions/8291673/how-to-add-new-column-to-android-sqlite-database ・カラムの追加 http://androidhacker.blog94.fc2.com/blog-entry-63.html ・テーブル名の変更/カラムの追加/テーブルの削除 http://www.dbonline.jp/sqlite/table/index4.htmlhttp://yasu-2.blogspot.jp/2012/06/androiddb.html

既存のデータを引き継ぎつつdbスキーマを変更する方法.1449802335.txt.gz · 最終更新: 2015/12/11 11:52 by sou