サンプルコード
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 件のコメント:
コメントを投稿