Применение ASP-страниц
Серверные ASP-страницы реализуются как текстовые HTML-файлы с расширением asp, которые содержат сценарии на языке JScript или VBScript. ASP-сценарии записываются между тегами <% и %>.
Доступ к базам данных выполняется из серверных ASP-сценариев посредством вызова методов интерфейса ADO (ActiveX Data Object).
При создании ASP-сценариев можно использовать следующие объекты:
- Application - определяет общедоступные переменные.
- Request - позволяет получить доступ к информации, передаваемой в HTTP-запросе.
- Response - формирует данные, передаваемые WEB-браузеру.
- Server - содержит методы, позволяющие создавать объекты и выполнять ASP-файлы.
- Session - объект, описывающий сеанс конкретного пользователя.
Для работы с базами данных в ASP-файлах удобно использовать объектный интерфейс ADO, который создан на базе OLE DB. Объектная модель ADO представляется набором последовательно используемых объектов, включая следующие:
- Connection - объект, используемый для соединения с источником данных;
- Command - объект, используемый для выполнения команд (SQL-операторов) и хранимых процедур;
- Recordset - объект "результирующий набор", который создается в результате выполнения команды;
- Field - объект, позволяющий реализовать доступ к столбцу результирующего набора;
- Parameters - объект, позволяющий работать с входными и выходными параметрами команд и хранимых процедур;
- Errors - объект, используемый для описания возникающих ошибок.
При применении ADO для соединения с базой данных в ASP-сценарии следует использовать объект ADODB.Connection, а для работы с результирующим набором - объект ADODB.Recordset.
Следующий пример иллюстрирует ASP-сценарий, выполняющий отображение записей из таблицы базы данных:
<% var con,rs; con=Server.CreateObject("ADODB.Connection"); con.Open ("MyDB", "User1", ""); srtSQL="Select * from t1"; rs= Server.CreateObject("ADODB.Recordset"); rs.Open (strSQL, con); %> <TABLE> while (! rs.EOF) { %> <TR> <TD> <%= rs.Fields("field1")%> </TD> <TD><%= rs.Fields("field2")%> </TD> </TR> <% rs.MoveNext(); } %> </TABLE> <% rs.Close; con.Close; %>
Метод CreateObject ASP- объекта Server создает объект, указываемый параметром. Метод Open ADO-объекта Connection устанавливает соединение с базой данных. Метод MoveNext объекта Recordset выполняет переход к следующей записи.
Объект Recordset позволяет выполнять модификацию записей, используя методы:
- AddNew - добавление новой записи;
- Delete - удаление записи;
- Update - обновление записи.
Например:
<% rs.AddNew; rs("field1")="123"; rs.Update; %>
Для реализации поиска указываемого значения в столбце результирующего набора следует использовать методы объекта Recordset:
- Find - поиск на основе заданного условия;
- Seek - поиск по ключевому полю.
Для наложения на открытый результирующий набор некоторого фильтра вызывается метод Filter объекта Recordset.
Для создания результирующего набора можно использовать метод Execute объекта Command.
Например:
<%@LANGUAGE=VBSCRIPT%> <! ASP-файл > <html> <body> <% dim con, rs, sql1 sql1="SELECT * FROM Tbl1;" set con = Server.CreateObject("ADODB.Connection") con.Open "DSN = MyDB" ' Устанавливаем соединение set rs = con.execute(sql1) ' Открываем результирующий набор if rs.BOF and rs.EOF then ' Результирующий набор пустой Response.Write("Нет строк") else rs.MoveFirst Do While Not rs.EOF ' Доступ по имени столбца Response.Write(rs("F1") & " " & rs("F2") & "<br>") rs.MoveNext Loop end if rs.close set rs = nothing %> </body> </html>
Доступ к значениям столбцов может быть реализован через объект типа Recordset как по имени столбца, так и по его номеру. Отображаемые значения в ASP-сценариях указываются после оператора =.
Например:
<TABLE border = 1> <% Do while (Not rs.eof) %> <tr> <% For Index=0 to (rs.fields.count-1) %> <td ><% = rs(Index)%></td> ' Доступ по номеру ' столбца <% Next %> ' Цикл по столбцам </tr> <% rs.MoveNext Loop ' Цикл по строкам результирующего набора %> </TABLE>