Google Gearsデータベースの基礎            WebOS Goodies                  伊藤千光
Gearsデータベースの特徴基本的に SQLite そのままの、本格的な RDB です。JavaScript で SQL を発行することでアクセスします。ローカルに大容量データを保存できます。(現在のところ容量無制限)SQL の実行はネイティブ...
gears_init.jsを読み込むGears の機能を使うときは必ず読み込む。以下のように script タグで読み込めば OK。  <script type="text/javascript" src="gears_init.js"></s...
Gearsのインストールを確認 window.google.gears が定義されていれば Gears インストール済み。 インストールされていない場合は、 Gears のインストールページにリダイ レクトする。if(!window.googl...
インターフェースを取得 google.gears.factory.create を呼び出して、DB操作のためのインターフェース を取得します。 ユーザーに Gears の利用の可否を尋ねるダイアログが表示されます。 ユーザーが拒否すると例外が投...
データベースを開くopen メソッドを呼び出して、データベースを開きます。引数はデータベース名です。データベースが存在しなければ、自動的に作成されます。データベース名は ASCII 文字しか使えません。一部の記号も使えません。ひとつのインターフ...
テーブルの作成execute メソッドで SQL を実行できます。まずはテーブルがないと話にならないので、テーブルを作ります。SQL の CREATE を発行してテーブルを作ります。IF NOT EXISTS を指定して、毎回実行するのが楽です...
SQLの実行(結果なし)execute メソッドで SQL を実行します。(既出)結果を返さないコマンドなら、単にメソッドを実行するだけです。SQL 内の ? は第2引数の配列の対応する要素で置換されます。必要ならエスケープも自動で行われます。...
SQLの実行(結果あり)execute メソッドで select 文などを実行すると、その結果を格納したResultSet オブジェクトが返ります。以下のようにしてハッシュ配列に落としてしまうのが楽です。ResultSet は、使い終わったら必...
トランザクショントランザクションを使うことで、複数の行をアトミックに挿入できます。途中でエラーが起こったときは、すべてをロールバックできます。多数の行を挿入する際は、パフォーマンス的にも有利です。トランザクションの閉じ忘れに注意してください。ト...
Tips...Gears のデータベースファイルは SQLite と互換性があります。SQLite 用のツールがそのまま利用可能です。IE では API を call や apply で呼び出すことはできません。該当する行が存在すれば UPDA...
ライブラリ・ツールGearshifthttp://code.m.ac.nz/gearshift/Gears In Motionhttp://code.google.com/p/gearsinmotion/Google Gears ORMhttp...
ご質問は?mailto:hokousya@webos-goodies.jp     http://webos-goodies.jp/
Upcoming SlideShare
Loading in …5
×

Google Gears データベースの基礎

1,228 views

Published on

2007年の Google Gears デベロッパー交流会のために用意したスライドです(けっきょく使わなかったけど)。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,228
On SlideShare
0
From Embeds
0
Number of Embeds
70
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Google Gears データベースの基礎

  1. 1. Google Gearsデータベースの基礎 WebOS Goodies 伊藤千光
  2. 2. Gearsデータベースの特徴基本的に SQLite そのままの、本格的な RDB です。JavaScript で SQL を発行することでアクセスします。ローカルに大容量データを保存できます。(現在のところ容量無制限)SQL の実行はネイティブコードなので、高速です。トランザクションをサポートしています。ドメインを基本としたセキュリティーモデルになっています。ユーザーなどの概念はありません。同期式 API なので、使い方が簡単です。コールバックはいりません!全文検索もできます。(現在、日本語は未対応。 Gears 0.3 で対応?)
  3. 3. 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. 4. Gearsのインストールを確認 window.google.gears が定義されていれば Gears インストール済み。 インストールされていない場合は、 Gears のインストールページにリダイ レクトする。if(!window.google || !google.gears) { // Gears がインストールされていなければ、インストールページにリダイレクト location.href = "http://gears.google.com/?action=install&message= + escape(Google Gears をインストールしてください);} else { // 次に続く... インストールページに表示するメッセージ}
  5. 5. インターフェースを取得 google.gears.factory.create を呼び出して、DB操作のためのインターフェース を取得します。 ユーザーに Gears の利用の可否を尋ねるダイアログが表示されます。 ユーザーが拒否すると例外が投げられるので、適切に処理してください。} else { // 前からの続き try { db = google.gears.factory.create(beta.database, 1.0); } catch(e) { // Gears の利用を拒否されたときの処理 引数は事実上これに固定 throw e; }}
  6. 6. データベースを開くopen メソッドを呼び出して、データベースを開きます。引数はデータベース名です。データベースが存在しなければ、自動的に作成されます。データベース名は ASCII 文字しか使えません。一部の記号も使えません。ひとつのインターフェースでは同時にひとつのデータベースしか開けません。複数のデータベースを同時に使うときは、もうひとつインターフェースを作成してください。 db.open(db_name);
  7. 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. 8. SQLの実行(結果なし)execute メソッドで SQL を実行します。(既出)結果を返さないコマンドなら、単にメソッドを実行するだけです。SQL 内の ? は第2引数の配列の対応する要素で置換されます。必要ならエスケープも自動で行われます。可変パラメータは必ず上記の置換機能を利用しましょう。(SQLインジェクション対策)db.execute(INSERT INTO tbl_name (title, url) VALUES (?, ?), [WebOS Goodies, http://webos-goodies.jp]); 対応する文字列に置換されます
  9. 9. 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. 10. トランザクショントランザクションを使うことで、複数の行をアトミックに挿入できます。途中でエラーが起こったときは、すべてをロールバックできます。多数の行を挿入する際は、パフォーマンス的にも有利です。トランザクションの閉じ忘れに注意してください。トランザクションのネストはできないので、自分でロックカウンタを実装して管理しましょう。db.execute(BEGIN IMMEDIATE); トランザクション開始!try { // 挿入などの処理 db.execute(COMMIT); 正常終了なら変更を確定} catch(e) { db.execute(ROLLBACK); エラーが起こったらロールバック throw e;}
  11. 11. Tips...Gears のデータベースファイルは SQLite と互換性があります。SQLite 用のツールがそのまま利用可能です。IE では API を call や apply で呼び出すことはできません。該当する行が存在すれば UPDATE 、なければ INSERT として機能するREPLACE という SQL コマンドがあります。“select last_insert_rowid() from tbl_name” で最後に挿入した行のrowid が取得できます。(プライマリキーが整数のとき、 rowid はプライマリキーのエイリアスです)ほとんどの API は例外を投げる可能性があります。例外のハンドリングを忘れないようにしてください。トランザクションが開始できないと長時間ブロックする可能性があります。
  12. 12. ライブラリ・ツールGearshifthttp://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. 13. ご質問は?mailto:hokousya@webos-goodies.jp http://webos-goodies.jp/

×