ADO で GetString() を使用してスクリプトを高速化

GetString()メソッドを使用して、ASPスクリプトのスピードを向上させ、複数行のResponse.Writeを置き換えてください。

インスタンス

GetString()の使用方法
GetString()を使用して、HTMLテーブル内にレコードセットのデータを表示する方法について説明します。

複数行のResponse.Write

以下の例では、HTMLテーブル内にデータベースクエリを表示する方法を示しています:

<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT Companyname, Contactname FROM Customers", conn
%>
<table border="1" width="100%">
<%do until rs.EOF%>
   <tr>
      <td><%Response.Write(rs.fields("Companyname"))%></td>
      <td><%Response.Write(rs.fields("Contactname"))%></td>
   </tr>
<%rs.MoveNext
loop%>
</table>
<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>
</body>
</html>

大規模なクエリの場合、これによりスクリプトの処理時間が増加します。これは、サーバーが多くの Response.Write コマンドを処理するためです。

解決策は、<table> から </table> までのすべての文字列を作成し、一度に Response.Write で出力することです。

GetString() メソッド

GetString() メソッドにより、Response.Write 1回ですべての文字列を表示する能力が得られます。また、EOF がどの位置にあるかを確認する do..loop コードや条件テストを必要としません。

文法

str = rs.GetString(format, rows, coldel, rowdel, nullexpr)

レコードセットからのデータを使用して HTML テーブルを作成する場合、上記のパラメータのうち 3 つのみを使用します(すべてのパラメータはオプションです):

  • coldel - 列区切りとして使用される HTML
  • rowdel - 行区切りとして使用される HTML
  • nullexpr - 空の列に使用される HTML

注記:GetString() メソッドは ADO 2.0 の機能です。以下のアドレスから ADO 2.0 をダウンロードできます:http://www.microsoft.com/data/download.htm

以下の例では、GetString() メソッドを使用して、レコードセットを文字列として保存します:

<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT Companyname, Contactname FROM Customers", conn
str=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
%>
<table border="1" width="100%">
  <tr>
    <td><%Response.Write(str)%></td>
  </tr>
</table>
<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>
</body>
</html>

上の変数 str には、SELECT ステートメントが返すすべての列と行の文字列が含まれています。各列の間には </td><td>、各行の間には </td></tr><tr><td> が表示されます。これにより、Response.Write を一度だけ使用して必要な HTML を取得できます。