GetString()でADOの速度を上げる
GetString()メソッドを使用して、(複数のResponse.Writeを使用する代わりに)ASPスクリプトを高速化します。
複数のResponse.Writeの
次の例は、データベースクエリをHTMLテーブルに表示する1つの方法を示しています。
<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()メソッドを使用すると、1つのResponse.Writeのみで文字列を表示できます。また、do ... loopコードとレコードセットがEOFにあるかどうかをチェックする条件付きテストも排除されます。
構文
str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
レコードセットからのデータを使用してHTMLテーブルを作成するには、上記の3つのパラメーターのみを使用する必要があります(すべてのパラメーターはオプションです)。
- coldel-列区切り文字として使用するHTML
- rowdel-行区切り文字として使用するHTML
- nullexpr-列がNULLの場合に使用するHTML
注: GetString()メソッドはADO2.0の機能です。ADO 2.0は、 https://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変数には、SQLSELECTステートメントによって返されるすべての列と行の文字列が含まれています。各列の間にHTML </ td> <td>が表示され、各行の間にHTML </ td> </ tr> <tr> <td>が表示されます。これにより、1つのResponse.Writeだけで必要な正確なHTMLが生成されます。