2012年12月17日月曜日

PhoneGapのAPIを利用してDatabaseを簡単に操作する

このエントリーをはてなブックマークに追加
PhoneGapのAPIを利用するとDatabaseを簡単に操作できるようです。そのAPIを利用して、「Hello World!」の文字を格納したテーブルを作成し、そのテーブルから「Hello World!」を取得して画面に表示するプログラムを作成しました。



サンプルコード
index.htmlを次のような流れでコーディングしました。

1. デバイス準備完了を待つ。
2. デバイス準備の完了後、HELLOテーブルを作成し、「Hello World!」の文字を挿入。
3. 「Hello World!」の文字を検索し、画面に表示。

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=default-width; user-scalable=no"/>
        <meta http-equiv="Content-type" content="text/html" charset="utf-8"/>
        <link rel="stylesheet" type="text/css" href="spec/lib/jquery.mobile-1.2.0/jquery.mobile-1.2.0.min.css">
        <script type="text/javascript" src="spec/lib/jquery.mobile-1.2.0/jquery-1.8.2.min.js"></script>
        <script type="text/javascript" src="spec/lib/jquery.mobile-1.2.0/jquery.mobile-1.2.0.min.js"></script>
       
        <title>Hello World!</title>
            <script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script>
            <script type="text/javascript" charset="utf-8">
               
                // イベントリスナの登録。デバイスの準備完了まで待つ。
                document.addEventListener("deviceready", onDeviceReady, false);
               
                // デバイス準備完了時にコールバック。
                function onDeviceReady() {
                    var db = window.openDatabase("Database", "1.0", "Hello DB ", 200000);
                    db.transaction(populateDB, errorCB, successCB);
                }
               
                // テーブル準備
                function populateDB(tx) {
                    tx.executeSql('DROP TABLE IF EXISTS HELLO');
                    tx.executeSql('CREATE TABLE IF NOT EXISTS HELLO (key PRIMARY KEY, data)');
                    tx.executeSql('INSERT INTO HELLO (key, data) VALUES ("hello", "Hello World!")');
                }
               
                // テーブル準備、hello検索の失敗時にコールバック。
                function errorCB(err) {
                    console.log("Error processing SQL: "+err.code);
                }
               
                // テーブル準備の成功時にコールバック。
                function successCB() {
                    var db = window.openDatabase("Database", "1.0", "Hello DB", 200000);
                    db.transaction(queryDB, errorCB);
                }
               
                // hello検索
                function queryDB(tx) {
                    tx.executeSql('SELECT data FROM HELLO WHERE key = "hello"', [], querySuccess, errorCB);
                }
               
                // hello検索の成功時にコールバック。
                function querySuccess(tx, results) {
                    if (results.rows.length == 1) {
                        console.log("oi");
                        document.getElementById("hello").innerHTML = results.rows.item(0).data;
                    }
                }
               
                </script>
    </head>
    <body>
        <div data-role="page">
            <div data-role="header">
                <h1>header</h1>
            </div>
            <div data-role="content">
                <h1 id='hello'></h1>
            </div>
            <div data-role="footer" data-position="fixed">
                <h1>footer</h1>
            </div>
        </div>
    </body>
</html>

サンプルはPhoneGapのAPIリファレンスを参照して作成しました。 http://docs.phonegap.com/en/2.2.0/cordova_storage_storage.md.html


実行結果
iPhone SimulatorのiOS6.0で実行した場合、DBは"0000000000000001.db"という名前で下記パスに作成されていました。

{ホーム}/Library/Application Support/iPhone Simulator/6.0/Applications/{アプリケーションID}/Library/WebKit/LocalStorage/file__0

SQLiteBroweser等のDBを参照するツールで見ると、HELLOテーブルに"hello"と"Hello World"のレコードが追加されてました。こんな簡単にDB操作ができるとは。。

関連:PhoneGapとjQuery Mobileを使ったネイティブアプリ開発

0 件のコメント:

コメントを投稿