Ускорение ADO с помощью GetString()
Используйте метод GetString(), чтобы ускорить сценарий ASP (вместо использования нескольких 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() позволяет отображать строку только с одним Response.Write. Это также устраняет код цикла do... и условный тест, который проверяет, находится ли набор записей в EOF.
Синтаксис
str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
Чтобы создать HTML-таблицу с данными из набора записей, нам нужно использовать только три из указанных выше параметров (все параметры являются необязательными):
- coldel - HTML для использования в качестве разделителя столбцов
- rowdel - HTML для использования в качестве разделителя строк
- nullexpr - HTML для использования, если столбец имеет значение NULL
Примечание. Метод GetString() — это функция ADO 2.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 содержит строку всех столбцов и строк, возвращаемых оператором SQL SELECT. Между каждым столбцом появится HTML </td><td>, а между каждой строкой появится HTML </td></tr><tr><td>. Это создаст именно тот HTML, который нам нужен, только с одним Response.Write.