Создание серверных приложений
Применение 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>