ADO Speed Up Scripts with GetString()


Please use the GetString() method to speed up your ASP scripts (instead of multiple lines of Response.Write).


Multi-line Response.Write

The following example demonstrates a way to display a database query in an HTML table:

<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>

For a large query, doing so will increase the script's processing time, because the server needs to process a large number of Response.Write commands.

The solution is to create the entire string, from <table> to </table>, and then output it - using Response.Write only once.


GetString() Method

The GetString() method enables us to display all strings using only one Response.Write. It also doesn't even need do..loop code or condition tests to check if the recordset is at EOF.

Syntax

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

To create an HTML table using data from a recordset, we only need to use three of the above parameters (all parameters are optional):

  • coldel - HTML used as column delimiter
  • rowdel - HTML used as row delimiter
  • nullexpr - HTML used when a column is empty

Note:The GetString() method is a feature of ADO 2.0. You can download ADO 2.0 from the following address:http://www.microsoft.com/data/download.htm

In the following example, we will use the GetString() method to store the recordset as a string:

Example

<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>

The variable str above contains a string of all columns and rows returned by the SELECT statement. Between each column, </td><td> appears; between each row, </td></tr><tr><td> appears. In this way, using only one Response.Write, we obtain the required HTML.

Other Extensions