/ 流通システム部
Tweet
シェア
システム開発ブログ
最近の記事
- Chrome for Androidの新機能、Chrome to Mobileを試す
- ファイルサーバのBCP対策(アイロベックスの場合)
- Illustratorの矢印機能でラクラク矢印作成!
- システム会社選びのポイント
- システム保守の移管費用を抑えます
- アイロベックス通信発行してます
- ボタンのデザインをxmlで定義する
- Excel2010で行コピーをした場合に、画像ファイルのサイズが変わらないようにする
- Power Point2010 でスライド番号をつける方法
- Photoshop の秘宝
カテゴリー
- HTML全般 (2)
- Access (15)
- Android (5)
- .NET (14)
- Excel (9)
- Google Apps (5)
- HTML5 (3)
- iPhone (8)
- JAVA (14)
- Linux (7)
- Movable Type (15)
- MySQL (7)
- OpenOffice (10)
- Oracle (6)
- PHP (20)
- SQLServer (4)
- twitter (6)
- VBA (11)
- Webサイト構築・Web戦略 (32)
- Webサイト構築事例 (4)
- Windows (10)
- その他 (29)
- アクセス解析 (2)
- ウィジェット (1)
- システム設計 (5)
- システム開発事例 (3)
- システム開発体制 (1)
- セキュリティ (5)
- データベース (20)
- プロジェクト管理 (8)
- 品質管理・テスト (6)
- 帳票 (3)
- 技術活用 (6)
- 運用・保守 (8)
部署
- システム開発事業部 (33)
- ビジネスソリューション課 (17)
- システムソリューション事業部 (32)
- 流通システム部 (76)
- 産業システム部 (93)
- ソフトウエア開発部 (56)
- Webコンサルティング部 (97)
- 企画開発部 (37)
- 部長インタビュー (3)
月別アーカイブ
- 2012年2月 (6)
- 2012年1月 (18)
- 2011年12月 (19)
- 2011年11月 (22)
- 2011年10月 (29)
- 2011年9月 (28)
- 2011年8月 (5)
- 2011年7月 (18)
- 2011年6月 (15)
- 2011年5月 (21)
- 2011年4月 (8)
- 2011年3月 (12)
- 2011年2月 (12)
- 2011年1月 (13)
- 2010年12月 (18)
- 2010年11月 (19)
- 2010年10月 (19)
- 2010年9月 (21)
- 2010年8月 (17)
- 2010年7月 (21)
- 2010年6月 (22)
- 2010年5月 (14)
- 2010年4月 (12)
- 2010年3月 (13)
- 2010年2月 (9)
- 2010年1月 (12)
- 2009年12月 (7)
- 2009年11月 (6)
- 2009年10月 (8)
- 2009年9月 (7)
- 2009年8月 (3)
- 2009年7月 (1)
- 2009年6月 (3)
- 2009年5月 (1)
- 2009年4月 (1)
- 2009年3月 (8)
- 2009年2月 (10)
- 2009年1月 (1)
- 2008年12月 (1)






流通システム部
みなさん、こんにちは。
流通システム部の古郡です。
前回の記事でWeb SQL Databaseについて簡単に説明しました。
今回は、実際のコードを使ってもう少し詳しく説明したいと思います。
以下のコードはページのロード時などにWeb SQL Databaseに接続し、
テーブルにデータがあれば取得して画面に表示するJavaScriptのコードです。
//データベース オープン(データベースに接続する) var db = window.openDatabase("testDb","","testDb","1024"); // テーブルが存在しなければ作成 db.transaction( function(tx) { tx.executeSql("create table if not exists testTable (id integer primary key autoincrement, name, val)"); } ); // データ取得 db.transaction( function(tx) { tx.executeSql("select * from testTable", [], function(tx, rs) { // ここで画面表示初期化の処理を呼ぶ initTable(); // 実際のコードは省略 if(rs.rows.length > 0){ for(var i = 0; i < rs.rows.length; i++){ var row = rs.rows.item(i); // 画面表示の処理を呼ぶ addTable(row.id, row.name, row.val); // 実際のコードは省略 } } }, function(tx, ex) { alert('Sql Error CallBack'); } ); }, function(ex){ alert('transaction Error CallBack'); } );画面イメージはこちらです。
それでは、詳しいコードの説明に入ります。
まず2行目、ここでは前回紹介したwindow.openDatabaseを使用して、
データベースとの接続を行っています。
今回の例では「testDb」という名前のデータベースに接続しています。
このとき、データベースが存在していない場合は新しく作成されます。
//データベース オープン(データベースに接続する) var db = window.openDatabase("testDb","","testDb","1024");戻り値であるオブジェクトはこの後使うので変数に代入します。
本来はこのようなグローバル変数として使用するべきではありませんが、
今回は例ということなので気にしないでください。
4行目では接続したデータベースにテーブルが存在しているか確認し、
テーブルが存在しない場合はテーブルを作成しています。
ここで、前回紹介したtransactionとexecuteSqlを使います。
db.transaction には引数としてトランザクションオブジェクトが渡されます。
このトランザクションオブジェクト(例では変数tx)のexecuteSqlメソッドを使用してSQLを実行します。
// テーブルが存在しなければ作成 db.transaction( function(tx) { tx.executeSql("create table if not exists testTable (id integer primary key autoincrement, name, val)"); } );10行目以降の処理でテーブルに存在するデータを取得します。
ここで注目すべきは13行目以降の関数です。
これは、実行したSQLが成功したときの処理になります。
この関数には引数として、1つ目の引数にトランザクションオブジェクト、
2つ目の引数に実行結果のオブジェクトが渡されます。
// データ取得 db.transaction( function(tx) { tx.executeSql("select * from testTable", [], function(tx, rs) { // ここで画面表示初期化の処理を呼ぶ initTable(); // 実際のコードは省略 if(rs.rows.length > 0){ for(var i = 0; i < rs.rows.length; i++){ var row = rs.rows.item(i); // 画面表示の処理を呼ぶ addTable(row.id, row.name, row.val); // 実際のコードは省略 } } }, function(tx, ex) { alert('Sql Error CallBack'); } ); }, function(ex){ alert('transaction Error CallBack'); } );SELECT文の結果は実行結果オブジェクトの「rows」というオブジェクトに格納されます。
「rows」は16行目のようにrows.lengthで結果の件数を取得したり、
18行目のようにrows.item(index)で該当行数の行データを取得することができます。
rows.item(index)で取得した行データは20行目のように、
「行オブジェクト.カラム名」で列データを取得することができます。
今回はデータベースとの接続、および選択処理を例にWeb SQL Databaseを見てきました。
実際に触ってみる場合は、Google Chromeのデベロッパーツールを使用すると、
テーブルにどのような値が入っているのかを簡単に確認することができるので便利かと思います。
Web SQL Databaseの欠点としては、作成したデータベースを削除する手段が
実際に使用しているファイルを削除するしかないところでしょうか。
私の環境は Windows7 ですが、データベースの削除には
"ユーザフォルダ\AppData\Local\Google\Chrome\User Data\Default\databases"
内のファイルを削除する必要がありました。
前回も少し触れましたがWeb SQL Databaseは仕様凍結状態になっており、
今後の発展が期待できないAPIです。
ただ、デザイナの方などがSQLを学ぶ材料としては非常によくできていると思いますし、
家で簡単に使えるので駆け出しのプログラマの勉強材料としても十分だと思います。
興味を持った方は是非とも触ってみてはいかがでしょうか?
「システム開発ブログ」へのコメントやご意見等ありましたら、ファンページまでお願いします。 Facebook のファンページ
他社のシステムも直します。資産を活かしてシステムリフォーム