Многие программисты ASP имели опыт выполнения запросов к базе данных и последующего отображения результатов запросов в таблицах HTML. Обычно мы делаем это:
| Вот цитата: <% 'Создать соединение/набор записей 'Заполняем данные в объект набора записей %> <ТАБЛИЦА> <% Делать Пока не rs.EOF %> <ТР> <TD ><%=rs(Field1)% ></TD> <TD ><%=rs(Field2)% ></TD> . </TR> <% rs.MoveNext Цикл %> </ТАБЛИЦА> |
Если результатов запроса много, серверу потребуется много времени для интерпретации вашего сценария ASP, поскольку необходимо обработать множество операторов Response.Write. Если вы поместите все выходные результаты в длинную строку (от до). , тогда серверу нужно интерпретировать оператор Response.Write только один раз, и это будет намного быстрее. Некоторые талантливые ребята из Microsoft воплотили эту идею в жизнь (обратите внимание, что эта функция доступна только в ADO 2.0 и более поздних версиях). Если вы все еще используете предыдущую версию, обновите ее до последней версии)
С помощью метода GetString мы можем использовать только один Response.Write для отображения всего вывода. Это похоже на цикл DO... LOOP, который может определить, является ли набор записей EOF.
GetString используется следующим образом (все параметры являются необязательными):
String = Recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)
Чтобы сгенерировать HTML-таблицу на основе результатов набора записей, нам нужно учитывать только 3 из 5 параметров GetString:
ColumnDelimiter (код HTML, разделяющий столбцы набора записей), RowDelimiter (код HTML, разделяющий строки набора записей) и NullExpr (код HTML, который должен создаваться, когда текущая запись пуста). Как вы можете видеть в примере создания HTML-таблицы ниже, каждый столбец разделен... и каждая строка разделена.... Пример кода:
| Вот цитата: <%@ LANGUAGE=VBSCRIPT %> <% Option Explicit 'Хорошая техника кодирования 'Устанавливаем соединение с БД Тусклый конн. Установите conn = Server.CreateObject(ADODB.Connection) conn.Open DSN=Борейный ветер; 'Создаем набор записей Димры Установите rs = Server.CreateObject(ADODB.Recordset) rs.Open SELECT * FROM table1, conn 'Сохраняем нашу одну большую строку Тусклая стрТаблица strTable = rs.GetString(,,</td><td>,</td></tr><tr><td> , ) %> <HTML> <ТЕЛО> <ТАБЛИЦА> <ТР><ТД> <% Response.Write(strTable) %> </TR></TD> </ТАБЛИЦА> </ТЕЛО> </HTML> <% «Уборка!» rs.Close Setrs=Ничего конн.Закрыть Установить соединение = Ничего %> |
Строка strTable используется для хранения кода HTML-таблицы, которую мы сгенерировали на основе результатов SELECT * FROM table1.
Между каждым столбцом таблицы HTML будет HTML-код, а между каждой строкой будет HTML-код. Метод GetString выведет правильный HTML-код и сохранит его в strTable, так что для вывода нам понадобится только одна строка Response.Write. набор данных Все записи . Давайте рассмотрим простой пример, предполагая, что результаты нашего запроса возвращают следующие строки и столбцы:
| Вот цитата: Кол.1 Кол.2 Кол.3 Ряд 1 Боб Смит 40 Ряд1 Эд Фрэнк 43 Row1 Сью Пустота 42 |
Строка, возвращаемая оператором GetString, будет:
| Вот цитата: Боб</td ><td >Смит</td ><td >40</td ><td >/td >/tr ><tr >< ТД >Эд... |
Эта строка выглядит длинной и беспорядочной, но это и есть нужный HTML-код. (Обратите внимание, что мы поместим его после него в рукописном HTML-коде. Это связано с тем, что наша строка форматирования не содержит строк, необходимых для верхнего и нижнего колонтитула этих таблиц.)