「Safari @iPhoneでSQLiteデータベースが使えない」なんてことはないよね?

PC版へ 2011年09月05日
iPhone使いで自転車乗りなので、GPSログ機能を持つアプリを愛用しています。が、こいつがバッテリーを喰いまくる。おそらく、凄まじい頻度でGPS信号を受信しているのが原因だと思われます。

で、もっと緩い感じのGPSロガーを作ってみよう。Safari は JavaScript で位置情報を取得できるし、ローカルデータベースも使えるし。位置情報取得の時間間隔を空ければバッテリの保ちも良くなるんじゃないか。…と思って参考にしようとしたのがこのページ。

  → iPhoneがJavaScript+SQLiteでGPSレコーダーに!:ASCII.jp

ここに載っているサンプルは正しく動作しません。とりあえずローカルにデータベースを作成できない。

う〜ん、困ったな…と思っていると、同じ連載の別の記事にこんな記述を発見。

HTML5の仕様からWeb SQL Databaseが廃止されたためでしょうか、iOS 4.2ではJavaScriptからSQLiteへのアクセスができなくなりました。
 → iOS 4.2×localStorageで作るGPSレコーダー:ASCII.jp

マジか。ローカルストレージよりもデータベースのほうが使い勝手が良さそうなんだが…と更に調べてみたり、スクリプトを弄ったりしていると、あれ?

普通にSQLiteデータベース、使えるよね?

結局、データベースをオープン・新規作成するときに、関数 openDatabase() の第三・第四引数を null にしない(==明示的に指定してやる)と、何事もなくデータベースにアクセスできるようです。
たとえば、

var db = openDatabase( 'testDB' , '1.0' , 'test database' , 5000000 );

これで、"testDB" が存在しなければ新規作成され、存在していればそれを開いて、変数 db にデータベースオブジェクトが返ってきます。

さて、無事にデータベースを作成できたので、次に進みましょう。先はまだまだ長そうだ。とりあえず秋の自転車シーズンが続いているうちに完成できれば良いのですが。

関連記事

コメント

現在、コメント機能は停止しています。