Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Объект Recordset

Объект Recordset представляет полный набор записей таблицы данных или результат выполненной команды. В любое время объект Recordset ссылается только на одну запись из текущего набора. Объекты Recordset можно создавать независимо от ранее созданных объектов Connection путем указания метода Open в строке команды. Когда ADO создает объект Connection, он не устанавливает соответствие между этим объектом и переменными объекта. Кроме того, при открытии составного объекта Recordset нужно отдельно создать и открыть объект Connection; это назначит свойство для переменной объекта. Если не используется переменная объекта, когда открывается объект Recordset, то ADO создает новый объект Connection для каждого нового объекта Recordset, даже если пропущена эта операция. Объекты Recordset используют для управления данными на уровне записей. При использовании ADO, почти всегда управление данными происходит с помощью объектов Recordset. Все объекты Recordset строятся с использованием записей (строк) и полей (столбцов). Возможно использование четырех различных типов курсора при открытии объекта Recordset:

  1. Dynamiccursor - позволяет просматривать добавления, изменения и удаления, сделанные другими пользователями; позволяет любые виды перемещений внутри Recordset, которые не используют закладок; разрешает использовать закладки, если провайдер их поддерживает;
  2. Keysetcursor - ведет себя как и Dynamiccursor, за исключением того, что предотвращает просмотр записей, добавленных другими пользователями, и защищает от доступа к записям, удаленным другими пользователями из набора Recordset; всегда поддерживает закладки и любые типы перемещений внутри Recordset; данные, измененные другими пользователями, будут видны;
  3. Staticcursor - обеспечивает статическую копию набора записей, используемую для поиска данных или генерации отчета; добавления, изменения и удаления других пользователей здесь не видны;
  4. Forward-onlycursor - ведет себя идентично Staticcursor за исключением того, что позволяет просматривать записи только в одном направлении - вперед. Это улучшает выполнение в случае когда нужно "пробежаться" по всем записям только один раз.

Установить необходимый тип курсора можно с помощью свойства CursorType объекта Recordset или указать одноименный аргумент при вызове метода Open. Если пользователь не определил тип курсора, то ADO по умолчанию открывает курсор типа Forward-onlycursor. Пользователь может создавать столько объектов Recordset, сколько ему нужно. Различные объекты Recordset могут обращаться к одним и тем же таблицам и записям, не конфликтуя при этом. При создании объекта Recordset текущая запись отмечается как первая запись, а свойства BOF и EOF устанавливаются False. Если не существует ни одной записи, то свойство RecordCount устанавливается в 0, а свойства BOF и EOF устанавливаются True. Наряду с методом Move можно использовать методы MoveFirst, MoveLast, MoveNext и MovePrevious, а также свойства AbsolutePosition, AbsolutePage и Filter для переопределения текущей записи. При использовании курсора типа Forward-onlycursor можно пользоваться только методом MoveNext. При использовании метода Move для обращения к каждой записи, нужно использовать свойства BOF и EOF для определения достижения начала или конца объекта Recordset. Объект Recordset поддерживает два способа обновления данных: прямое и пакетное. При прямом обновлении все изменения в данных записываются в основной источник данных сразу же после вызова метода Update. В случае пакетного обновления, провайдер сначала кэширует все произведенные изменения, а затем одним вызовом метода UpdateBatch пересылает их в базу данных. После вызова метода UpdateBatch для проверки возможного конфликта данных используется свойство Status. Заметим, что пакетный метод обновления можно использовать только при двух типах курсора: Keysetcursor и Staticcursor.

Коллекция Fields содержит все объекты Field объекта Recordset. Каждый объект Field соответствует столбцу во множестве Recordset. Используя свойство Value объекта Field, можно устанавливать или возвращать данные для текущей записи. Используя коллекции, методы и свойства объекта Field, можно выполнять следующие действия:

  • возвращать имя поля с помощью свойства Name;
  • просматривать или изменять данные во множестве Recordset с помощью свойства Value;
  • возвращать основные характеристики поля, используя свойства Type, Precision и NumericScale;
  • возвращать объявленный размер поля с помощью свойства DefinedSize;
  • возвращать действительный размер данных во взятом поле с помощью свойства ActualSize;
  • используя свойство Attribute, определить типы функций, которые можно выполнить с данным полем;
  • с помощью методов AppendChunk и GetChunk, управлять значениями полей, содержащих длинную двоичную или текстовую информацию;
  • используя свойства OriginalValue и UnderlyingValue, разрешать разногласия в значениях полей при пакетном обновлении данных.

Для обращения к объекту Field в коллекции по порядковому номеру или имени используются следующие способы:

recordset.Fields(0)

recordset.Fields("name")

recordset(0)

recordset("name")

recordset![name]

<== предыдущая лекция | следующая лекция ==>
Объект Command | Организация работы с БД с помощью ASP
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 501; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.