内容へ移動
MSS Wiki 開発者ブログ (メモ?)
ユーザ用ツール
ログイン
サイト用ツール
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
最近の変更
メディアマネージャー
サイトマップ
トレース:
既存のデータを引き継ぎつつ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.html ・ http://yasu-2.blogspot.jp/2012/06/androiddb.html
既存のデータを引き継ぎつつdbスキーマを変更する方法.1449802335.txt.gz
· 最終更新: 2015/12/11 11:52 by
sou
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ