2008/04/16

[google gears]SELECT文の結果をFetchする。

今日も、google gearsの使い方について。

tableのデータを取り出す方法について書きたいと思います。

すでに、tableにデータが入っていた場合、

var rs = db.execute('select * from hoge');
//カラム数をn個とする。
while (rs.isValidRow()) {
  alert(rs.field(0) + rs.field(1) + rs.field(2) + ・・・ + rs.field(n));
  rs.next();
}
rs.close();

という流れで取り出すことができます。

まず、isValidRowメソッドで行を取り出すことができるかどうかの確認を行い、レコード(行)が存在するまでwhileでループします。

そして、while文の中では、fieldメソッドを使ってフィールドの値を取り出し、nextメソッドを使って、次のレコードに進んでいきます。

ここで、重要なのは、nextメソッドを使わないと、無限ループが発生し、ループが終了しません。

(ObjectBrowserを作っているときに、これに気づかなくて、ずっと無限ループにはまってました(ノ◇≦。))

while文の終了後も重要なことがあって、closeメソッドを使う必要があるようです。

closeさせる理由がよくわかっていないのですが、Google Gears Apiで推奨されていました。

Releases the state associated with this result set
You are required to call close() when you are finished with any result set.

via:Database Module API

PL/SQLだと、カーソルのopenをして、次にFetchして、最後にcloseするのですが、closeをする理由は、再度カーソルを使いたい場合、closeしないと再openできないという理由からcloseをするのですが、同じ理由なのかな( ̄ー ̄?)

ちなみに、上のwhile文で、fieldメソッドに直接数字を記入して使っているのですが、一般にこの方法は、カラム数がたくさんある場合や、何個あるかわからない場合、あまり便利な方法とは言えません。

次回は、直接Indexを書かずにfieldメソッドを使う方法について書きたいと思います。

0 コメント:

コメントを投稿