Сегодня поговорим о свойствах объекта Recordset.
1. Атрибут CursorType
AdOpenForwardOnly: только курсор вперед, значение по умолчанию. То же, что статический курсор, за исключением того, что он может прокручивать записи только вперед. Используйте его для повышения производительности, когда требуется только одностороннее перемещение в наборе записей. (Как следует из названия, этот курсор может перемещаться только вперед. Однако из-за своей ограниченной функциональности он очень эффективен при использовании с системными ресурсами.)
AdOpenKeyset: курсор набора ключей. Хотя записи, удаленные другими пользователями, недоступны из вашего набора записей, курсоры набора ключей аналогичны динамическим курсорам, за исключением того, что записи, добавленные другими пользователями, нельзя просмотреть. Данные, измененные другими пользователями, по-прежнему можно увидеть. (Курсор KeySet позволяет вам видеть изменения, внесенные другими пользователями с момента его создания, но вы не можете видеть записи, добавленные или удаленные другими пользователями.)
AdOpenDynamic: динамический курсор. Может видеть добавления, изменения и удаления, сделанные другими пользователями. Разрешены все типы перемещений внутри набора записей, за исключением операций с закладками, которые не поддерживаются поставщиком. (Этот тип курсора является мощным и потребляет больше всего системных ресурсов. Динамические курсоры могут видеть все изменения в сохраненных ими коллекциях записей. Пользователи, использующие динамические курсоры, могут видеть изменения, добавления и удаления, сделанные другими пользователями. Если поставщики данных разрешить этому типу курсора поддерживать такую видимость путем получения данных из источника данных через регулярные промежутки времени, несомненно, потребует много ресурсов.)
AdOpenStatic: статический курсор. Статическая копия коллекции записей, которую можно использовать для поиска данных или создания отчетов. Кроме того, дополнения, изменения или удаления, сделанные другими пользователями, не видны. (Курсор статического класса — это просто снимок данных. То есть он не может видеть изменения, внесенные в RecordSet другими пользователями с момента его создания. С помощью этого типа курсора вы можете перемещаться вперед и назад. Из-за его простоты Требования к ресурсам меньше, чем у Dynamic!)
Примечание. После открытия RecordSet вы не сможете изменить свойство CursorType. Однако если вы сначала закроете RecordSet, измените свойство CursorType, а затем снова откроете RecordSet, вы все равно сможете эффективно изменить тип курсора!
2. Атрибут LockType В любом приложении базы данных, которое может быть изменено несколькими пользователями одновременно, приходится иметь дело с ситуацией, которая может возникнуть, когда несколько пользователей одновременно работают с одной и той же записью. Когда это происходит, целостность данных оказывается под угрозой, поскольку один пользователь может по незнанию перезаписать чужие изменения при сохранении своих собственных. В это время вам будет казаться, что вы ничего не делаете. Чтобы справиться с этой ситуацией. ADO позволяет вам определить тип одновременного управления событиями при обновлении объекта RecordSet и способ блокировки записей пользователем во время его редактирования. Это определяется атрибутом LockType. Этот атрибут имеет четыре значения:
adLockReadonly: значение по умолчанию, только для чтения. Данные не могут быть изменены. (Это значение по умолчанию для RecordSet. Если вы установите это значение для метода блокировки, вы не сможете обновлять Recordset.)
adLockPessimistic: консервативная блокировка записей (поэлементно). Поставщик выполняет необходимые действия для обеспечения успешного редактирования записи, обычно путем немедленной блокировки записи в источнике данных после редактирования. (Если установлен этот тип блокировки, запись блокируется, и к ней могут получить доступ только пользователи, которые редактируют между моментом начала редактирования и отправкой обновления записи поставщику данных!)
adLockOptimistic: блокировка открытых записей (позаписи). Поставщик использует открытую блокировку, блокируя записи только при вызове метода Update. (Записи блокируются только в момент передачи данных поставщику данных.)
adlockBatchOptimistic: открыть пакетное обновление. Используется для режима пакетного обновления, а не для режима немедленного обновления. (Набор записей, настроенный на этот тип режима блокировки, будет называться режимом пакетного обновления набора записей. Он может ускорить обновление набора записей для изменения данных, но поскольку несколько записей обновляются одновременно, это также будет усугубить проблемы, связанные с одновременным доступом!)
3, свойство AbsolutePage
Атрибут AbsolutePage задает номер страницы, на которой расположена текущая запись; используйте атрибут PageSize для разделения объекта Recordset на логические страницы. Количество записей на каждой странице равно PageSize (за исключением того, что последняя страница может быть меньше PageSize). количество записей). Здесь следует отметить, что не все поставщики данных поддерживают этот атрибут, поэтому используйте его с осторожностью.
Как и свойство AbsolutePosition, свойство AbsolutePage начинается с 1. Если текущая запись является первой строкой набора записей, значение AbsolutePage равно 1. Вы можете настроить свойство AbsolutePage для перемещения к первой строке записей на указанной странице.
4. Атрибут AbsolutePosition. Если вам необходимо определить положение текущего индикатора в RecordSet, вы можете использовать атрибут AbsolutePosition.
Значением атрибута AbsolutePosition является положение текущего индикатора относительно первой сделки, начиная с 1, то есть AbsolutePosition первой сделки равно 1.
Обратите внимание, что при доступе к RecordSet нет гарантии, что RecordSet каждый раз будет отображаться в одном и том же порядке.
Чтобы включить AbsolutePosition, необходимо сначала настроить его на использование клиентского курсора (указателя): rs.CursorLocation=3
5. Атрибут PageCount Используйте атрибут PageCount, чтобы определить, сколько «страниц» данных включает в себя объект Recordset. «Страница» здесь представляет собой набор записей данных с размером, равным настройке свойства PageSize. Даже если количество записей на последней странице меньше значения PageSize, последняя страница также считается страницей. PageCount. Следует отметить, что не все поставщики данных поддерживают этот атрибут.
6. Атрибут PageSize
Атрибут PageSize является ключом к определению способа отображения страниц при доступе ADO к базе данных. Его можно использовать для определения количества записей, образующих логическую «страницу». Устанавливает и создает размер страницы, позволяющий перейти к первой записи другой логической страницы с помощью свойства AbsolutePage. Свойство PageSize можно установить в любое время.
7. Атрибут RecordCount. Это также очень часто используемый и важный атрибут. Мы часто используем атрибут RecordCount, чтобы узнать, сколько записей содержит объект Recordset. Используйте свойство RecordCount, чтобы определить количество записей в объекте Recordset. Это свойство возвращает –1, если ADO не может определить количество записей или если поставщик или тип курсора не поддерживает RecordCount. Чтение свойства RecordCount в закрытом наборе записей приведет к ошибке. Тип курсора объекта Recordset влияет на возможность определения количества записей. Свойство RecordCount возвращает -1 для курсоров, предназначенных только для прямого перемещения, фактическое количество для статических курсоров или курсоров набора ключей и -1 или фактическое количество для динамических курсоров в зависимости от источника данных.
8. Атрибуты BOF и EOF Обычно мы пишем код в программе ASP для проверки атрибутов BOF и EOF, чтобы узнать местоположение набора записей, на который в данный момент указывает индикатор. Используя атрибуты BOF и EOF, мы можем узнать, является ли Объект набора записей содержит записи или узнайте, вышла ли перемещенная строка записи за диапазон объекта набора записей.
Если позиция текущей записи находится перед первой строкой объекта Recordset, свойство BOF возвращает true, в противном случае оно возвращает false.
Если позиция текущей записи находится после последней строки объекта Recordset, свойство EOF возвращает true, в противном случае оно возвращает false.
(И BOF, и EOF имеют значение True, что указывает на отсутствие записей в наборе записей.)
9. Атрибут Filter определяет условия фильтрации данных в наборе записей. Используйте атрибут Filter для выборочной блокировки записей в объекте Recordset. станет текущим курсором.
Это повлияет на другие свойства, основанные на текущем возвращаемом значении курсора, такие как AbsolutePosition, AbsolutePage, RecordCount и PageCount, поскольку установка для свойства Filter
определенного
значения перемещает текущую запись к первой записи, которая удовлетворяет новому значению.
Я думаю, что этот атрибут весьма полезен. Иногда после того, как мы открыли набор записей и сделали определенные выводы, нам нужно отфильтровать записи, то есть перенастроить оператор SQL. Должны ли мы закрыть набор записей и открыть его с помощью нового оператора SQL? Нет, мы используем атрибут Filter для фильтрации, например
rs.open exec,conn,1,1
если .... то rs.filter="name='xxx'"
вместо
rs.open exec,conn,1,1
если... тогда
RS.закрыть
exec=exec&" где name='xxx'"
rs.open exec,conn,1,1
конец, если
На самом деле, фильтр придется использовать во многих местах. Об этом также будет упомянуто в будущих навыках ASP.
Завтра мы продолжим разговор о методах объекта Recordset.