内容へ移動
MSS Wiki 開発者ブログ (メモ?)
ユーザ用ツール
ログイン
サイト用ツール
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
最近の変更
メディアマネージャー
サイトマップ
トレース:
既存のデータを引き継ぎつつdbスキーマを変更する方法
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
===== 方法 ===== SQLiteOpenHelper#onUpgradeをコールさせ、onUpgrade内で任意のクエリを実行する。\\ onUpgradeをコールするには、コンストラクタに引き渡すDBバージョンを引き上げます。\\ ===== SQLiteOpenHelperの実装例 ===== 仕様変更によりカラムが増えた例\\ \\ テーブルfooにカラムageを追加し初期値として0を設定するSQL\\ 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"); } } } }
既存のデータを引き継ぎつつdbスキーマを変更する方法.1449802614.txt.gz
· 最終更新: 2015/12/11 11:56 by
sou
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ