(3)データベースからデータを取得する

データベースからデータを取得するには、Executeというメソッドを利用します。Executeメソッドの引数には、SQLというデータベースのための言語を利用します。SQLは、それ自体が一冊の書籍になるくらいに奥の深い世界なので、本稿で詳しく踏み込むことはしません。ここでは、まず「emailテーブルから(FROM email)すべてのフィールドを無条件に取り出している(SELECT)」とだけ理解しておきましょう。

SELECT命令(データを取り出す命令)を実行した場合、Executeメソッドは戻り値として結果セット(Recordsetオブジェクト)を返します。結果セットとは、テーブルから取り出したレコードの集合を表すための仮想的なテーブルのようなものです。ここでは、テーブルの内容を丸ごと取り出していますが、一般的には、一部の列/行だけを取り出したり、複数のテーブルを結合(加工)するのが普通です。

(4)結果セットからデータを取得する

結果セットからデータを取得するには、レコードポインタという概念を理解しておく必要があります。レコードポインタとは、Resultsetオブジェクトが今、結果セットのどの行を読み込んでいるのかを表す目印のようなものだと考えておけば良いでしょう。Resultsetオブジェクトでは、このレコードポインタを移動させながら、先頭から順に結果セットを読み込んでいくのです。

レコードポインタを移動するのは、MoveNextメソッドの役割です。また、現在のレコードポインタがある行のフィールド値を取得するには、「rs("フィールド名")」のように記述します。たとえば、addressフィールドの値を取得したいならば、「rs("address")」のように書きます。 ここでは、レコードポインタが結果セットの末尾に到達する(EOFプロパティがTrueになる)まで、Do While命令によるループを繰り返します。レコードポインタは初期状態で結果セットの先頭に位置していますので、これによって、結果セットのすべての内容を取得処理できるわけです。

(5)データベースへの接続を切断する

作業を終えたら、Closeメソッドでデータベースへの接続を閉じます。明示的に閉じなくても、スクリプトが終了するタイミングで接続は切られますが、使ったものはきちんと後始末するクセをつけておくのは良いことです。

以上、今回はスクリプトからデータベースにアクセスする方法について紹介しました。データベースを利用することで、扱うデータが大量になった場合にも一貫性を保ちやすいですし、また高速に処理することができますので、スクリプトの可能性もぐんと広がります。データベースに苦手意識を持っている方にも、今回紹介したサンプルがデータベースに触れるきっかけになればと思います。

データベースアクセスのためのライブラリであるADOはまだまだ奥深い世界ですので、今後の連載でも、機会があればスクリプトの中でさまざまなテクニックを織り交ぜて紹介していければと思っています。

山田祥寛
有限会社WINGSプロジェクト代表取締役。Microsoft MVP for ASP/ASP.NET。主な近著に「JavaScriptマスターブック」「ASP.NET AJAXプログラミング」「MySQL逆引きクイックリファレンス」(毎日 コミュニケーションズ)、「独習Java サーバサイド編」「Zend Framework徹底入門」(翔泳社)、「ASP.NET MVC実践プログラミング」(秀和システム)、「書き込み式 SQLのドリル」(ソシム)など。最近では、雑誌/サイト記事の執筆/監修から講演までを広く手掛ける毎日である。 http://www.wings.msn.to/