ADO GetString() によるスクリプト高速化


GetString() メソッドを使用して、ASP スクリプトを高速化してください(複数行の Response.Write の代わりに)。


複数行の 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 を1回だけ使用します。


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>","&nbsp;")
%>

<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 を1回使用するだけで、必要な HTML が得られます。

その他の拡張