登録者:hokousya

Google Gears データベースの基礎

2008-01-22 21:41:08
アクセス数:6716
タグ: Google JavaScript
2

■説明

Google のデベロッパー交流会用に作ったのですが、けっきょく使わなかったスライドです。 Google Gears のデータベース機能の基本的な使用方法を解説しています。以下のページに若干の補足があります。

http://webos-goodies.jp/archives/51260280.html

リンク

このスライドの現在表示中のページへのリンク
ブログパーツ
google ガジェット

関連するスライド

GoogleAnalyticsマニュアル

投稿者:mick
投稿日時:2009-06-10 15:33:51

リスティング広告アドバイス事業

投稿者:mick
投稿日時:2008-10-14 13:23:20

お気に入り登録したユーザ

GoodJobしたユーザ

タグクラウド

■スライド内のテキスト

スライド1: Google Gearsデータベースの基礎WebOS Goodies伊藤千光

スライド2: Gearsデータベースの特徴Gearsデータベースの特徴基本的に SQLite そのままの、本格的な RDB です。JavaScript で SQL を発行することでアクセスします。ローカルに大容量データを保存できます。(現在のところ容量無制限)SQL の実行はネイティブコードなので、高速です。トランザクションをサポートしています。ドメインを基本としたセキュリティーモデルになっています。ユーザーなどの概念はありません。同期式 API なので、使い方が簡単です。コールバックはいりません!全文検索もできます。(現在、日本語は未対応。 Gears 0.3 で対応?)

スライド3: gears_init.jsを読み込むgears_init.jsを読み込むGears の機能を使うときは必ず読み込む。以下のように script タグで読み込めば OK。<script type="text/javascript" src="gears_init.js"></script>gears_init.js は、 Google Code で配布されています。http://code.google.com/apis/gears/

スライド4: Gearsのインストールを確認Gearsのインストールを確認if(!window.google || !google.gears) {// Gears がインストールされていなければ、インストールページにリダイレクトlocation.href = "http://gears.google.com/?action=install&message=' +} else {}window.google.gears が定義されていれば Gears インストール済み。インストールされていない場合は、 Gears のインストールページにリダイレクトする。// 次に続く...escape('Google Gears をインストールしてください');インストールページに表示するメッセージ

スライド5: インターフェースを取得google.gears.factory.create を呼び出して、DB操作のためのインターフェースを取得します。ユーザーに Gears の利用の可否を尋ねるダイアログが表示されます。ユーザーが拒否すると例外が投げられるので、適切に処理してください。} else { // 前からの続き}try {db = google.gears.factory.create('beta.database', '1.0');} catch(e) {}// Gears の利用を拒否されたときの処理throw e;引数は事実上これに固定

スライド6: データベースを開くopen メソッドを呼び出して、データベースを開きます。引数はデータベース名です。データベースが存在しなければ、自動的に作成されます。データベース名は ASCII 文字しか使えません。一部の記号も使えません。ひとつのインターフェースでは同時にひとつのデータベースしか開けません。複数のデータベースを同時に使うときは、もうひとつインターフェースを作成してください。db.open('db_name');

スライド7: テーブルの作成execute メソッドで SQL を実行できます。まずはテーブルがないと話にならないので、テーブルを作ります。SQL の CREATE を発行してテーブルを作ります。IF NOT EXISTS を指定して、毎回実行するのが楽です。データ型は事実上 INTEGER, REAL, TEXT だけです。(BLOBは?)他のデータ型はこれらのいずれかにマップされます。“INTEGER PRIMARY KEY” のフィールドには自動で連番がふられます。db.execute('CREATE TABLE IF NOT EXISTS tbl_name (' +' id INTEGER PRIMARY KEY,' +' title TEXT,' +' url TEXT )');

スライド8: SQLの実行(結果なし)SQLの実行(結果なし)execute メソッドで SQL を実行します。(既出)結果を返さないコマンドなら、単にメソッドを実行するだけです。SQL 内の '?' は第2引数の配列の対応する要素で置換されます。必要ならエスケープも自動で行われます。可変パラメータは必ず上記の置換機能を利用しましょう。(SQLインジェクション対策)db.execute('INSERT INTO tbl_name (title, url) VALUES (?, ?)',['WebOS Goodies','http://webos-goodies.jp']);対応する文字列に置換されます

スライド9: SQLの実行(結果あり)SQLの実行(結果あり)execute メソッドで select 文などを実行すると、その結果を格納したResultSet オブジェクトが返ります。以下のようにしてハッシュ配列に落としてしまうのが楽です。ResultSet は、使い終わったら必ず close してください。var qr = db.execute('select * from tbl_name');var rows = [];try {while(qr.isValidRow()) { 行がなくなると false を返しますvar cols = {};for(var i = 0 ; i < qr.fieldsCount() ; ++i)cols[qr.fieldName(i)] = qr.field(i);rows[result.length] = cols;qr.next();}} finally {qr.close();}次の行に移る必ずクローズしてください

スライド10: トランザクショントランザクションを使うことで、複数の行をアトミックに挿入できます。途中でエラーが起こったときは、すべてをロールバックできます。多数の行を挿入する際は、パフォーマンス的にも有利です。トランザクションの閉じ忘れに注意してください。トランザクションのネストはできないので、自分でロックカウンタを実装して管理しましょう。db.execute('BEGIN IMMEDIATE');try {// 挿入などの処理db.execute('COMMIT');} catch(e) {}db.execute('ROLLBACK');throw e;トランザクション開始!正常終了なら変更を確定エラーが起こったらロールバック

スライド11: Tips...Gears のデータベースファイルは SQLite と互換性があります。SQLite 用のツールがそのまま利用可能です。IE では API を call や apply で呼び出すことはできません。該当する行が存在すれば UPDATE 、なければ INSERT として機能するREPLACE という SQL コマンドがあります。“select last_insert_rowid() from tbl_name” で最後に挿入した行のrowid が取得できます。(プライマリキーが整数のとき、 rowid はプライマリキーのエイリアスです)ほとんどの API は例外を投げる可能性があります。例外のハンドリングを忘れないようにしてください。トランザクションが開始できないと長時間ブロックする可能性があります。

スライド12: Gearshiftライブラリ・ツールhttp://code.m.ac.nz/gearshift/Gears In Motionhttp://code.google.com/p/gearsinmotion/Google Gears ORMhttp://www.urielkatz.com/archive/detail/google-gears-orm-v02/HTML5Wrapper for Gearshttp://glazkov.com/blog/html5-gears-wrapper/SQLAdmin for Google Gearshttp://coenraets.org/blog/2007/05/flex-based-sqladmin-for-google-gears/TrimJunctionhttp://code.google.com/p/trimpath/wiki/TrimJunctionvortex.offlinehttp://geekycodestuff.blogspot.com/2007/09/announcing-vortexoffline-library-v01.html

スライド13: ご質問は?mailto:hokousya@webos-goodies.jphttp://webos-goodies.jp/