Доступ к базам данных из ASP: RecordSet, его методы и свойства.




Recordset создается методом CreateObject.

Объект Recordset включает определения полей и свойств, связанных с находящейся в базе данных информацией. Набор данных — это копия определенного фрагмента базы данных в памяти компьютера, сохраняющая структуру последней. Набор данных представляет так называемое пассивное (не подключенное) к базе данных состояние, то есть фрагмент базы данных присутствует в памяти компьютера, хотя соединение с реальной базой данных уже закрыто. Этот объект предоставляет разработчику широкий набор функциональных возможностей; благодаря ему можно выполнять практически любую обработку выбранной из базы данных информации.

<% Dim objRecordset

Recordset Set objRecordset = Server.CreateObject("ADODB.Recordset") ' Создаем объект

objRecordset.Open "SELECT *", objConnection %> ' Выполняем запрос SQL

Свойства Fields содержат описание полей: от установленного в таблице типа и размера этого поля до имени для реальной длины его значения. Для доступа к этим свойствам необходимо знать имя требуемого поля и название интересующего свойства, например, строка вида rs.Fields("Article").value указывает на значение поля Article текущей записи активной таблицы открытой базы данных(db.Open "Articles")

Свойство Name (Имя) используется для указания имени столбца таблицы базы данных.

<% howmanyfields = rs.fields.count - 1 for I = 0 to howmanyfields Response.Write rs.fields(i).name Response.Write "<BR>" next %>

Подобный подход позволяет создавать Web-страницы с динамически изменяющимся содержимым, в которых имена полей таблиц могут использоваться для построения заголовков.

Свойство Value содержит значение, выбранное из поля таблицы. Для определения текущего типа представления данных предназначено свойство Type. Если данные в программе, в зависимости от их типа, должны обрабатываться по-разному, свойство Type может быть использовано для выбора варианта обработки. Подобные действия необходимо осуществлять перед выполнением сравнений, вычислением значения выражений и т.п.

Выражение If rs.Fields("Article").value <> "No Text" Then...

позволяет сравнить значение, хранящееся в поле Article, с текстовой константой «No Text».

If rs.Fields("Article").type = "int" Then...

Позволяет определить, является ли тип поля Articles целочисленным

После того, как записи получены, для передвижения по ним можно обращаться к методам MoveFirst, MoveLast, MoveNext и MovePrevious. (MoveFirst — используется для перемещения к первой записи в наборе данных Recordset; MoveLast — используется для перемещения к последней записи в наборе данных Recordset; MoveNext — используется для перемещения к следующей записи по отношению к текущей позиции в наборе данных Recordset; MovePrevious — используется для перемещения к предыдущей записи).

<HTML><HEAD> <META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">

<TITLE>Using ADO</TITLE></HEAD><BODY> <%

Dim objConnection Dim objRecordset 'Объявляем переменные

Set objConnection = Server.CreateObject("ADODB.Connection") ' cоздаем объекты

Set objRecordset = Server.CreateObject("ADODB.Recordset")

objConnection.Open "Data", "", "" 'Устанавливаем подсоединение

objRecordset.Open "SELECT Name FROM Users", objConnection %> ’выполняем запрос

<SELECT SIZE=8> ‘Строим список SELECT по набору данных

<% Do While Not ObjRecordset.EOF %>

<OPTION><%=objRecordset("Name")%> </OPTION> ‘Создаем очередной элемент списка

<% objRecordset.MoveNext

Loop %>

</SELECT></BODY></HTML>

ADO поддерживает разбиение на страницы посредством свойств объекта Recordset: PageSize, PageCount и AbsolutePage. Количество строк набора данных, составляющих страницу, задается значением свойства PageSize. Общее количество страниц в наборе данных - свойством PageCount. Доступ к заданной странице обеспечивает свойство AbsolutePage.

 

 

<%@LANGUAGE="VBScript" %>

<%Response.Expires=-1 %>

<HTML><HEAD><META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">

<TITLE>Paging Records</TITLE> </HEAD> <BODY>

<% ' На какой мы странице?

Select Case Request.QueryString("Direction")

Case "" Session("CurrentPage") = 1

Case "Next" Session("CurrentPage") = Session("CurrentPage") + 1

Case "Prev" Session("CurrentPage") = Session("CurrentPage") - 1

End Select

Const adOpenKeyset = 1 ' Константы

Dim objConnection ' Объявляем переменные

Dim objRecordset ' Открываем базу данных

Set objConnection = Server.CreateObject("ADODB.Connection")

objConnection.Open "Data", "", ""

Dim strSQL 'Конструир оператор SQL

strSQL ="SELECT Name, About FROM Users"

Set objRecordset = Server.CreateObject("ADODB.Recordset") ' Создаем набор данных

objRecordset.PageSize = 10

objRecordset.Open strSQL, objConnection, adOpenKeyset

objRecordset.AbsolutePage = CLng(Session("CurrentPage"))

%> <P>Page <%=Session("CurrentPage")%> of ' Выводим результаты

<%=objRecordset.PageCount%></P>

<TABLE BORDER><TR><TH>Пользователь</TH><TH>Сведения</TH></TR><% Dim i

For i = 1 To objRecordset.PageSize

if NOT objRecordset.EOF Then

%> <TR><TD><%=objRecordset("Name")%></TD>

<TD><%=objRecordset("About")%></TD>

</TR> <% objRecordset.MoveNext

end if Next %> </TABLE>

<!-- Ссылка на СЛЕДУЮЩУЮ страницу -->

<% If CLng(Session("CurrentPage")) < objRecordset. PageCount Then %>

<P><A HREF="e8.asp?Direction=Next">Следующая страница</A></P> <%End If%>

<!-- Ссылка на ПРЕДЫДУЩУЮ страницу -->

<% If CLng(Session("CurrentPage")) > 1 Then %>

<P><A HREF="e8.asp?Direction=Prev">Предыдущая страница</A></P>

<%End If%>

<% ' Закрываем базу данных

objRecordset.Close objConnection.Close

Set objRecordset = Nothing

Set ObjConnection = Nothing %> </BODY></HTML>

Весь процесс разбиения на страницы обеспечивается одним ASP-файлом. Для каждой страницы данных вновь вызывается тот же самый ASP-файл. Обычно при вызове страницы Internet Explorer получает ее из памяти клиентского компьютера. В примере страница всегда будет находиться в памяти, поскольку вызывается постоянно. Чтобы предотвратить использование ASP-файлов из памяти, установили свойство Expires объекта Response в нуль, поэтому файл обновляется при каждом новом обращении к странице.

Обратите также внимание, что при каждом обращении к странице выполняется один и тот же запрос, меняется только свойство Absolute-Page. Такая стратегия кажется достаточно расточительной, но требует меньше ресурсов, чем запоминание объектов Recordset большого объема в переменных сессии и хранение их в период между обращениями к странице.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: