Основы проектирования приложений баз данных

       

Применение 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>


Содержание раздела