Databaseオブジェクトによるデータベース・アクセス (6/7)
作成:2012-04-23 09:49
更新:2012-04-23 09:49
更新:2012-04-23 09:49
■レコードの取得・検索
続いて、レコードを取得する場合についての説明です。下のリスト欄に、2つのレコード取得のパターンについてスクリプトをまとめておきました。ここでは以下の4つの関数が用意されています。
queryDB――すべてのレコードを取得するSQLを実行します。
findDB――titleフィールドに検索テキストを含むレコードだけを探すSQLを実行します。
querySuccess――SQLの実行が終了した後のコールバック関数です。取り出したレコードの情報をテキストにまとめ表示します。
errorCB――エラー処理です。
queryDB、findDBのいずれも「レコードをとり出す」という点は同じですから、その後の処理はどちらもquerySuccess関数で行なっています。では、実行しているSQLを見てみましょう。
・全レコードを取得
・特定の条件を設定してレコードを取得
問題は「条件って何?」ということでしょう。これは、大抵の場合、「等号・不等号」を使った式を書きます。このような形ですね。
この他、テキストの検索には「あいまい検索」というものもあります。これは「like」というものを使います。例えば、「title like "this%"」とすると、titleの値が「this」で始まるものだけを探します。値の指定で使っている「%」という記号は、ワイルドカードというもので、「ここにはどんな値も入れていいよ」というもの。つまり「this%」なら、「thisの後に何か書いてあるものは全部」という意味になります。
ところで、今回、SQLを実行しているexecuteSqlでは、前回までと引数の指定が違っていますね。SQL文を指定する第1引数の後にいくつもついています。これは以下のようになっています。
配列――SQL文の中に「?」記号を埋め込んでおき、ここに配列で値を用意すると、配列の値を順番に?のところに埋め込んでSQL文を完成させてくれます。
コールバック関数――実行が完了した後で呼び出されるコールバック関数です。
例外時の処理――エラーになった時の処理です。
成功した時に呼び出されるコールバック関数も、引数が増えています。ここでは以下のように定義されていますね。
queryDB――すべてのレコードを取得するSQLを実行します。
findDB――titleフィールドに検索テキストを含むレコードだけを探すSQLを実行します。
querySuccess――SQLの実行が終了した後のコールバック関数です。取り出したレコードの情報をテキストにまとめ表示します。
errorCB――エラー処理です。
queryDB、findDBのいずれも「レコードをとり出す」という点は同じですから、その後の処理はどちらもquerySuccess関数で行なっています。では、実行しているSQLを見てみましょう。
・全レコードを取得
SELECT * FROM テーブルこれですべてのレコードを取得できます。非常に単純ですね。レコード取得の基本はこの形です。この後に、必要に応じていろいろと条件が追加されます。
・特定の条件を設定してレコードを取得
SELECT * FROM テーブル WHERE 条件の指定何らかの条件を指定して、その条件にあうレコードだけを取り出したい場合には、基本形の後に「WHERE」をつけ、その後に条件を既述します。
問題は「条件って何?」ということでしょう。これは、大抵の場合、「等号・不等号」を使った式を書きます。このような形ですね。
フィールド名 = 値これで、指定のフィールドの値が右辺の値であるレコードのみ取り出せます。等号だけでなく、< >といった不等号記号も使えます。例えば、「num > 100」とすれば、numというフィールドの値が100より大きいものだけを取り出せるわけです。
この他、テキストの検索には「あいまい検索」というものもあります。これは「like」というものを使います。例えば、「title like "this%"」とすると、titleの値が「this」で始まるものだけを探します。値の指定で使っている「%」という記号は、ワイルドカードというもので、「ここにはどんな値も入れていいよ」というもの。つまり「this%」なら、「thisの後に何か書いてあるものは全部」という意味になります。
●executeSqlの引数について
ところで、今回、SQLを実行しているexecuteSqlでは、前回までと引数の指定が違っていますね。SQL文を指定する第1引数の後にいくつもついています。これは以下のようになっています。
executeSql( SQLクエリー, 配列,コールバック関数, 例外時の処理 );SQLクエリー――実行するSQL文ですね。これは今までと同じです。
配列――SQL文の中に「?」記号を埋め込んでおき、ここに配列で値を用意すると、配列の値を順番に?のところに埋め込んでSQL文を完成させてくれます。
コールバック関数――実行が完了した後で呼び出されるコールバック関数です。
例外時の処理――エラーになった時の処理です。
成功した時に呼び出されるコールバック関数も、引数が増えています。ここでは以下のように定義されていますね。
function querySuccess(tx, results) {……略……}第1引数はSQLTransactionオブジェクトですが、第2引数は「SQLResultSet」というオブジェクトです。このオブジェクトの中に、必要なデータがまとめられます。長くなるので、このへんは、実際にサンプルを作って説明をしましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
// ※全レコードを取得する function queryDB(tx) { tx.executeSql('SELECT * FROM MYMEMO', [], querySuccess, errorCB); } // ※titleに指定のテキストを含むレコードを取得する function findDB(tx){ var title = 検索テキスト ; tx.executeSql('SELECT * FROM MYMEMO WHERE title LIKE ?', [title], querySuccess, errorCB); } // 取得したレコードの表示 function querySuccess(tx, results) { ……取り出したレコードの処理を用意する…… } // エラー処理 function errorCB(err) { console.log("Error processing SQL: " + err.code); }
※関連コンテンツ
「PhoneGapによるAndroid/iPhoneアプリ開発入門」に戻る