air for ios で既存のSqliteファイルを使う

2014年10月3日金曜日

コンピュータ

sqlite は Airでも使える便利なデータベースですが、air for iosで利用する際に既存のデータベースを使いのですが、ちょと問題があります。たぶん、Androidでも同じ感じな気がします(未確認)

sqliteを新規のデータベースファイルで利用する際には問題ないのですが、既存のDBを利用するとなるとどうやって添付するかで悩みまくりました(汗)
で、一応解決した気がするのでまとめておきます。

注意:実際にAppleの審査を受けてないのではっきりわかりません。デバイスで確認できたというだけです。

・方法
データベースファイルをアプリに添付しておいて、初めて使うときにユーザ領域にコピーする。
この方法は他のファイルでも一旦コピーしてしまえば使えることから思いついてますが、Appleの審査受けてないアプリなのでだめかもよ?(笑)

��:添付します。
Flashbuilderの場合、プロパティー>Flexビルドパスー>ソースパスでDBの場所を設定、その中に添付したいDBファイルを置いておきます。
Flashbuilder側からはリンクのアイコン(?)が表示されると思います。ソースパスが設定されていれば中のファイルもビルド時に添付されると思いますが、確認したい場合は下記な感じ。
プロパティー>Flexビルドのパッケージー>apple ios ー>パッケージのコンテンツ

��:ファイルコピーします
Air for iosではユーザがアクセスできる領域が決められています。
詳しくはが参考になります

http://cuaoar.jp/2011/11/ios-air.html

http://blog.appforandroid.info/?p=803


今回は上記を踏まえて、アプリケーション領域にあるtestmoto.dbファイルをドキュメント領域(バックアップ対象)にコピー(testsaki.db)することにします。


var motoSQLFILE:File = new File("app:/testmoto.db");
var sakiSQLFILE:File = new File(File.documentsDirectory.nativePath+"/testsaki.db");

motoSQLFILE.copyTo(sakiSQLFILE, true);



testmoto.dbからtestsaki.dbへコピーしています。エラー制御等は外してますので適時。
あとは、下記のようにsqliteで読めばOKです。
添付した状態では書き込みや読み込みができないので、一旦コピーすればよいということですな。