Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3142 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 14:

Создание серверных приложений

< Лекция 13 || Лекция 14: 1234567

Применение 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>
< Лекция 13 || Лекция 14: 1234567