androidでDBファイルをassetからコピーしたいけど消したくないテーブルがあるのです
前回のエントリで、assetから.sqliteファイルをコピーするようにしたおかげでDBHelper内でごりごりInsertしなくて良くなった!すごい!ということになりました。
が、新たな問題が発生……
前提
- 私の作っているアプリは○×クイズ(のようなもの)である
- 問題テーブルを一々Insertするのが面倒だから(遅そうだし)コピーすることにした
- アプリ内には他に成績テーブルが存在する
つまり、問題テーブルを書き換えたいがために.sqliteファイルをコピーしたら、同じ.sqlite内にある成績テーブルまで消えてしまう!
当然といえば当然の話。
じゃあファイル別にすればいいじゃんと思いきや、SQLiteってスキーマとか無いから別のファイルどうやって見るのか謎だ。
調べてみたら「attach database」なるコマンドがあることが判明。
早速こちらを参考に実装。
ニクログ: AndroidのSQLiteで別のデータベースへ値を移動する方法
http://miquniqu.blogspot.jp/2012/01/androidsqlite.html
SQLiteOpenHelper#getWritableDatabaseをOverrideしてattach databaseを実行すると上手くいきました!
良かった良かった。
参考までにコードを貼ろうとしたけど、新しいはてなブログのコードの貼り方が分からなくて断念。