今日も、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
via:Database Module API
You are required to call close() when you are finished with any result set.
PL/SQLだと、カーソルのopenをして、次にFetchして、最後にcloseするのですが、closeをする理由は、再度カーソルを使いたい場合、closeしないと再openできないという理由からcloseをするのですが、同じ理由なのかな( ̄ー ̄?)
ちなみに、上のwhile文で、fieldメソッドに直接数字を記入して使っているのですが、一般にこの方法は、カラム数がたくさんある場合や、何個あるかわからない場合、あまり便利な方法とは言えません。
次回は、直接Indexを書かずにfieldメソッドを使う方法について書きたいと思います。
0 コメント:
コメントを投稿