Использование технологии ADO

advertisement
Лекция N6.Механизмы доступа к БД с использованием
технологий ODBC и ADO
Доступ к БД через ODBC
Если созданное с помощью С++ Builder приложение в процессе работы обращается к
базам данных, оно, как правило, использует для этой цели библиотеку BDE (Borland
Database Engine), основанную на технологии IDAPI (Integrated Database Application
Program Interface). Эта библиотека устанавливается автоматически при установке С++
Builder. По умолчанию она устанавливается в каталог C:\Program Files\Borland\Common
Files\BDE.
Следует отметить, что файлы, входящие в состав библиотеки BDE, предназначены для
использования не только приложениями, созданными с помощью С++ Builder, но и
многими другими продуктами Borland (Visual dBase, Paradox, Delphi, Borland C++,
IntraBuilder), созданными на их основе приложениями, а также офисными приложениями
Corel (например, электронной таблицей Quattro Pro), генератором отчетов Crystal Reports
(Seagate Software) . Поэтому при наличии нескольких использующих BDE приложений
все 32-разрядные приложения (в том числе C++ Builder) используют установленную
последней 32-разрядную версию BDE. В этом случае по умолчанию программа установки
C++ Builder предложит поставить BDE в каталог, где установлена уже используемая
версия BDE.
Рис.1. Связь приложений с источниками данных с помощью BDE
BDE обеспечивает для созданных приложений:








непосредственный доступ к локальным базам данных (dBase, Paradox, текстовые
файлы)
доступ к SQL-серверам (Oracle, Sybase, MS SQL Server, InterBase, Informix, DB2) с
помощью драйверов Borland SQL Links
доступ к любым источникам данных, имеющим драйвер ODBC (Open DataBase
Connectivity), например, к файлам электронных таблиц (Excel, Lotus 1-2-3),
серверам баз данных, не имеющим драйверов SQL Links (например, Gupta/Centura)
создание приложений клиент-сервер, использующих разнородные данные
высокую производительность при работе с плоскими таблицами
использование SQL (Structured Query Language - язык запросов к серверным
СУБД), в том числе при работе с локальными данными
изоляцию приложения от средств языковой поддержки
изоляцию приложения от конфигурации системы и сети
Утилита настройки BDE
При возникновении необходимости доступа к данным в большинстве случаев для их
источника (как правило, это какая-либо конкретная база данных) создается псевдоним
(alias), имя которого используется приложением. Параметры этого и других псевдонимов,
а также параметры настройки драйверов баз данных содержатся в файле idapi32.cfg,
расположенном в том же каталоге, что и файлы BDE. Для изменения содержания этого
файла, а также значений соответствующих этой библиотеке ключей реестра Windows 95 и
Windows NT используется утилита конфигурации BDE - BDECFG32.EXE.
Утилита конфигурации состоит из одной формы, содержащей блокнот из шести страниц.
Страница Drivers содержит параметры доступа к различным типам данных.
Страница Aliases содержит сведения о псевдонимах источников данных, к которым
посредством BDE обращаются приложения, установленные на данном компьютере.
Страница System содержит параметры настройки работы самой библиотеки BDE,
связанные с использованием памяти, сетевого окружения и других ресурсов, доступных
использующим BDE приложениям. Эти параметры содержатся в реестре Windows 95 (или
Windows NT).
Страницы Date, Time, Number содержат правила отображения в приложениях
календарных дат, времени и числовых данных в соответствии с правилами, принятыми в
той или иной стране.
Настройка драйверов баз данных
Для настройки драйверов баз данных используется страница Drivers утилиты настройки
BDE. В левой части этой страницы имеется список доступных для BDE драйверов, куда
входят драйверы для dBase и Paradox, установленные на данном компьютере драйверы
SQL Links для доступа к серверным СУБД, а также имена ODBC-источников данных,
созданные с помощью 32-разрядного администратора ODBC панели управления Windows
(рис. 5.2).
Рис. 2. Настройка драйверов баз данных
При нажатии на кнопку New ODBC Driver можно добавить в список новый ODBCисточник данных (перед этим, естественно, следует установить соответствующий ODBCдрайвер и описать источник данных с помощью ODBC-администратора в панели
управления Windows). Можно также удалить ODBC-драйвер из файла конфигурации BDE
(Delete ODBC Driver).
В правой части страницы Drivers указаны параметры выбранного в списке драйвера. При
настройке драйверов следует заменить параметры, указанные по умолчанию, на значения,
специфические для выбранного источника данных (например, языковый драйвер, правила
обработки запросов, имя сервера и базы данных, тип сетевого протокола для доступа к
серверу, номер версии). Эти наборы параметров различны для различных драйверов баз
данных .
Создание и настройка псевдонимов баз данных
Для доступа приложений к данным средства разработки Borland используют механизм
псевдонимов, описывающих доступ к конкретным источникам данных. Создать описание
нового источника данных можно, нажав кнопку New Alias в левой части окна (рис. 6.3,
6.4).
Рис. 3. Выбор псевдонима БД и установка параметров
После этого в появившейся диалоговой панели следует ввести имя-псевдоним для этого
источника и выбрать нужный драйвер из предложенного списка (того, что определен на
странице Drivers). Имя STANDARD в этом случае соответствует таблицам dBase, Paradox
и текстовым файлам (в формате CSV - Comma Separated Value).
Рис. 4.Создание нового псевдонима БД
В правой части страницы Aliases содержатся параметры конкретных источников данных,
которые можно модифицировать, заменяя значения по умолчанию (в том числе
унаследованные с предыдущей страницы), например, имена каталогов, серверов, имя
пользователя по умолчанию, языковый драйвер и др.
Системные настройки BDE
Страница системных настроек позволяет указать параметры системы
используемые BDE и хранящиеся в реестре Windows (рис. 5, табл. 1).
и
сети,
Рис. 5. Страница System утилиты конфигурации BDE.
Таблица 1. Параметры системы и сети, используемые BDE.
Параметр
Описание
Значение
умолчанию
VERSION
версия BDE
LOCAL SHARE
Если этот параметр равен true, можно FALSE
использовать одни и те же данные
приложениями, использующими BDE, и
приложениями, не использующими BDE
MINBUFSIZE
Минимальный размер буфера оперативной
памяти для кэширования данных из БД.
Возможные значения - от 32 до 65535 Кб,
но не более, чем объем доступной Windows
оперативной памяти
MAXBUFSIZE
Максимальный размер буфера оперативной 2048
памяти для кэширования данных из БД.
Должен быть выше, чем MINBUFSIZE, но
не более, чем объем доступной Windows
оперативной памяти. Должен быть кратен
128.
по
LANGDRIVER
Языковый
драйвер,
соответствующий
национальной
версии
операционной
системы
MAXFILEHANDLES
Максимальное число файлов, открываемых 48
BDE. Может принимать целые значения от
5 до 256
SYSFLAGS
Внутренний параметр BDE
LOW MEMORY USAGE Максимально допустимый объем основной 32
LIMIT
памяти, используемый BDE
AUTO ODBC
если этот параметр принимает значение FALSE
true, используются все ODBC-источники из
файла ODBC.INI
DEFAULT DRIVER
драйвер, используемый первым, если тип
БД - FILE, и имя таблицы не имеет
расширения.
SQLQRYMODE
Метод исполнения запросов к серверам. NULL
Может
принимать
значения
NULL,
SERVER, LOCAL
SHAREDMEMSIZE
Максимальный размер для разделяемой 2048
оперативной памяти
SHAREDMEMLOCATION Предпочтительный адрес для размещения E000 (Windows
разделяемой области памяти.
95)
7000(Windows
NT)
Настройка параметров отображения даты, времени и
чисел
Страница Date позволяет указать параметры отображения дат (см. табл.2).
Таблица 2. Параметры настройки отображения дат
Параметр
Описание
Значение по умолчанию
SEPARATOR
Символ-разделитель числа, месяца и года Значение, содержащееся в
настройках
панели
управления Windows 95/NT
MODE
Параметр,
определяющий
порядок Значение, содержащееся в
следования числа. месяца и года. Может настройках
панели
принимать значения: 0(MDY), 1( DMY), управления Windows 95/NT
2(YMD).
FOURDIGITYEAR Параметр, определяющий отображаемое TRUE
число цифр года. Может принимать
значения: TRUE (4 цифры), FALSE (2
цифры)
YEARBIASED
Параметр, определяющий, прибавлять TRUE
или нет 1900 к значению года, если
предыдущий параметр равен FALSE
LEADINGZEROM Параметр, определяющий, указывать ли FALSE
лидирующие нули перед значением
месяца, если оно является однозначным
числом.
LEADINGZEROD Параметр, определяющий, указывать ли FALSE
лидирующие нули перед значением
числа, если оно является однозначным
числом.
Страница Time позволяет указать параметры отображения времени (см. табл. 3).
Таблица 3. Параметры настройки отображения времени
Параметр
Описание
Значение
умолчанию
TWELVEHOUR Параметр, определяющий интервал
часов: 0-12 (TRUE) или 0-24 (FALSE)
по
отображения TRUE
AMSTRING
Символьная строка для указания первой половины AM
дня, если TWELVEHOUR=TRUE
PMSTRING
Символьная строка для указания второй половины PM
дня, если TWELVEHOUR=TRUE
SECONDS
Параметр, определяющий, указывать ли секунды в TRUE
значении времени
MILSECONDS Параметр,
определяющий,
указывать
миллисекунды в значении времени .
ли FALSE
Страница Number позволяет указать параметры отображения числовых данных (табл. 4).
Таблица 4. Параметры настройки отображения чисел
Параметр
Описание
Значение по умолчанию
DECIMALSEPARATOR
Символ,
отделяющий Значение,
содержащееся
в
дробную часть числа
настройках панели управления
Windows 95/NT
THOUSANDSEPARATOR Символ, отделяющий друг Значение,
содержащееся
в
от
друга
"тройки" настройках панели управления
разрядов в многозначных Windows 95/NT
числах
DECIMALDIGITS
Максимальное
число 2
десятичных
разрядов
числа, полученного при
преобразовании
символьной строки
LEADINGZERON
Параметр, определяющий, TRUE
указывать ли нуль перед
дробной частью числа, чье
абсолютное
значение
меньше единицы
Немного о средствах языковой настройки BDE
Средства языковой настройки BDE представляют собой набор так называемых языковых
драйверов, устанавливающих набор символов, используемых в данных, и порядок
алфавитной сортировки для используемого языка. Языковые драйверы Borland
существуют для большого количества языков, в том числе и для русского.
При описании параметров драйвера баз данных (страница Drivers) следует указывать
языковый драйвер, предлагаемый для баз данных этого типа по умолчанию. При создании
нового псевдонима (страница Aliases) следует указывать, какой языковый драйвер
используется в базе данных, иначе будет использоваться языковый драйвер,
установленный по умолчанию для данного драйвера баз данных.
Отметим, что в общем случае языковая настройка баз данных и использующих их
приложений включает в себя не только настройку параметра LANGDRIVER на страницах
Drivers, Aliases и System. Некоторые СУБД имеют свои средства языковой настройки,
причем эти средства могут быть многоуровневыми. Например, в случае использования
какой-либо серверной СУБД может потребоваться, помимо настройки BDE, настройка
языковых параметров сервера, настройка аналогичных параметров клиентской части или
даже выбор соответствующей языковой версии сервера. Подробнее эти проблемы будут
рассмотрены чуть позже.
Помимо этого, существует проблема, связанная с различиями DOS- и Windows-кодировок
для русского языка. Языковые драйверы BDE существуют для обеих кодировок. Какой из
них выбрать, зависит от многих факторов: наличия и объема унаследованных данных,
наличия других приложений, использующих эти же данные и др. Например, разумно,
используя таблицы формата dBase III совместно с приложениями для DOS, созданными на
Clipper, применить DOS-кодировку для этих таблиц.
ODBC-источники
При работе с ODBC-источниками требуется настройка следующих параметров:
Параметр
Описание
VERSION
Внутренний параметр BDE
Значение по
умолчанию
1.0
TYPE
Идентификатор ODBC-источника
FILE
DLL
Имя 16-разрядной динамической библиотеки,
содержащей драйвер
IDODBC16.DLL
DLL32
Имя 32-разрядной динамической библиотеки,
содержащей драйвер
IDODBC32.DLL
ODBC DRIVER ODBC-драйвер для соединения с сервером
DRIVER
FLAGS
Внутренний параметр BDE
USER NAME
Имя пользователя в диалоге ввода пароля
ODBS DSN
Имя источника данных, описанного в администраторе
ODBC
OPEN MODE
Параметр, определяющий, в каком режиме
READ/WRITE
открываются таблицы - READ/WRITE eee READ ONLY
LANGDRIVER Языковый драйвер, определяющий набор символов и
порядок алфавитной сортировки
SCHEMA
CASHE SIZE
Число таблиц, чья структура кэшируется. Возможные
значения - от 0 до 32
SQLQRYMODE Метод выполнения запросов. Возможные значения:
LOCAL - запрос обрабатывается только клиентским
приложением, SERVER - запрос выполняется только
сервером, NULL (пустая строка) - запрос передается
клиенту, если сервер не может его обработать.
'ascii'ANSI
8
NULL
SQLPASSTHRU Определяет режим совместного использования одного и SHARED
MODE
того же псевдонима направляемыми на сервер и
AUTOCOMMIT
локальными запросами: NOT SHARED - совместное
использование запрещено, SHARED AUTOCOMMIT совместное использованием разрешено с
автоматическим завершением транзакций, SHARED
NOAUTOCOMMIT - совместное использованием
разрешено с завершением транзакций по правилам
сервера.
TRACE MODE Численное значение, определяющее уровень вывода
отладочной информации.
SCHEMA
CACHE TIME
Время нахождения информации о структуре таблиц в
-1
кэше в секундах от 1 до 2147483647. Другие значения: 1 - до закрытия БД, 0 - информация не кэшируется
BATCH
COUNT
Число записей, помещаемых в пакет до завершения
транзакции
Число записей,
умещающихся в
32 К.
MAX ROWS
Максимальное число записей, которые драйвер может
доставить на рабочую станцию при выполнении
одиночного SQL-запроса
-1 (нет
ограничений)
ROWSET SIZE Число записей, доставляемых в одном блоке данных
(поддерживается не всеми ODBC- драйверами).
20
При создании псевдонимов баз данных на страницу Aliases по умолчанию заносятся
параметры со страницы Drivers для соответствующего ODBC-драйвера. При
необходимости многие из них можно переопределить.
Ряд ODBC-источников требует указания параметра PATH - пути к каталогу, где находится
база данных.
Следует обратить внимание на то, что перед описанием ODBC-источника в файле
конфигурации BDE обязательно нужно установить соответствующий ODBC-драйвер и
описать соответствующий источник данных в панели управления Windows 95/NT,
используя соответствующий ODBC-администратор. При этом следует обратить внимание
на некоторую терминологическую неувязку. Дело в том, что ODBC-драйвер с точки
зрения BDE, создаваемый при нажатии кнопки New ODBC Driver на странице Drivers
утилиты конфигурации BDE, на самом деле представляет собой указание не на реальный
ODBC-драйвер, установленный в панели управления Windows, а на конкретный источник
данных, доступ к которому осуществляется с помощью реального ODBC-драйвера (с
точки зрения панели управления). При этом следует еще создать и соответствующий
псевдоним базы данных, что окончательно сбивает с толку некоторых начинающих
пользователей. Таким образом, последовательность действий при осуществлении доступа
к ODBC-источникам следующая:








Установить нужный ODBC-драйвер (и, возможно, соответствующий ODBCадминистратор для панели управления Windows).
Описать с помощью ODBC-администратора необходимый источник данных в
панели управления.
Запустить утилиту конфигурации BDE и нажать кнопку New ODBC Driver на
странице Drivers.
Придумать и ввести имя так называемого ODBC-драйвера с точки зрения BDE
Выбрать "настоящий" ODBC-драйвер из установленных в операционной системе
Выбрать имя источника данных
Нажать OK. В списке драйверов появится новый так называемый ODBC-драйвер (с
точки зрения BDE).
Перейти на страницу Aliases и создать псевдоним, связанный со вновь созданным
драйвером с точки зрения BDE.
Рис. 6. Описание нового ODBC-драйвера "с точки зрения BDE".
Отметим, что в версии BDE, поставляемой с Delphi 3.0, вся эта терминологическая
путаница ликвидирована, а все описанные в реестре Windows источники данных
добавляются в список псевдонимов, и тем самым ликвидируется необходимость
выполнения описанной выше инструкции. Остается надеяться, что в следующей версии
C++ Builder доступ к ODBC-источникам упростится таким же образом
Для корректного отображения русских букв и установки правильного порядка алфавитной
сортировки можно попытаться использовать какой-либо из русскоязычных драйверов
dBase или Paradox. Однако следует помнить, что некоторые ODBC-драйверы имеют свои
процедуры настройки, которые могут, в частности, включать опцию перекодировки OEM>ANSI (т.е. DOS->Windows). Кроме того, если доступ через ODBC осуществляется к
какой-либо серверной СУБД, следует обратить внимание на возможности языковой
настройки сервера и клиентской части.
Использование технологии ADO
Компонент DataBaseAccess предназначен для обеспечения доступа к информации,
хранимой в базах данных, и использует ActiveXDataObjects (ADO). Данный раздел
посвящен технологии ADO и возможностям ее использования в рамках активных
серверных страниц.
Технология ADO позволяет писать клиентские приложения для доступа и
манипулирования данными, хранящимися в БД. Основные преимущества ADO: простота
использования, высокая скорость, требуемый малый объем верхней памяти и дискового
пространства. Здесь мы рассмотрим одну из реализаций ADO - ADODB,
оптимизированную для работы с MicrosoftOLEDB, включая MicrosoftODBC для OLEDB.
Объекты Connection, Recordset и Command - основные элементы ADO для
взаимодействия с данными. Каждый из перечисленных объектов имеет коллекцию
Properties. Структурная модель объектов ADO приведена ниже на рисунке. Рассмотрим
по порядку все три объекта.
Объект Connection
Объект Connection представляет соединение с источником данных OLEDB. Объекты
Connection можно создавать независимо от ранее созданных объектов. Объект
Connection представляет собой выделенный сеанс связи с источником данных. В случае
архитектуры клиент/сервер этот объект может выступать эквивалентом соединения с
сервером. Используя коллекции, методы и свойства объекта Connection, можно
выполнять следующее:

конфигурировать соединение перед его
ConnectionString, ConnectionTimeout и Mode;

с помощью свойства DefaultDatabaseуказывать базу данных, которая будет
использоваться по умолчанию;
устанавливать уровень изоляции для транзакций с помощью свойства
IsolationLevel;
выбирать OLEDB-провайдера, используя свойство Provider;
устанавливать, а затем разрывать физическое соединение с источником данных,
используя методы Openи Close;
выполнять команды для установленного соединения, используя метод Execute, и
управлять их выполнением с помощью свойства CommandTimeout;




установкой
с
помощью
свойств



управлять транзакциями, включая вложенные транзакции, если провайдер
поддерживает их, с использованием методов BeginTrans, CommitTrans и
RollbackTrans и свойства Attributes;
обрабатывать ошибки, возвращаемые источником данных, используя коллекцию
Errors;
с помощью свойства Version определять версию ADO.
Коллекция Errors содержит в себе все объекты Error, которые относятся к одиночным
операциям. Любая операция ADO может генерировать одну или несколько ошибок. При
появлении ошибки один или несколько объектов Error могут быть помещены в
коллекцию Errors. Когда другая операция генерирует ошибку, то коллекция Errors
очищается, и в нее могут быть помещены новые объекты Error. Для принудительной
очистки коллекции Errors используется метод Clear. Некоторые свойства и методы
возвращают предупреждения, которые не прерывают выполнение программы. Для
получения детального описания каждой ошибки можно воспользоваться следующими
свойствами:





Description- содержит описание возникновения ошибки;
Number - содержит номер ошибки (число типа Long);
Source - идентифицирует объект, породивший ошибку; это особенно полезно, когда
имеется несколько объектов Error в коллекции Errors;
HelpFile и HelpContext - указывают на файл и раздел помощи MicrosoftWindows
описания ошибки, соответственно;
SQLState и NativeError- принимают информацию от источника данных ODBC.
В таблице приведены три примера используемых ошибок:
Имя константы
Номер ошибки Описание
AdErrInvalidArgument 3001
Неправильный аргумент
AdErrNoCurrentRecord 3021
Нет текущей записи для операции
AdErrIllegalOperation
Неправильная операция
3219
Объект Command
Объект Command можно создавать независимо от ранее созданных объектов Connection,
определив его свойство ActiveConnection в строке команды. Когда ADO создает объект
Connection, он не устанавливает соответствие между этим объектом и переменными
объекта. Кроме того, когда ставится в соответствие составной объект Command
соединению, необходимо отдельно создать и открыть объект Connection; это назначит
свойство для переменной объекта. Если не установить свойство ActiveConnectionобъекта
Command в переменную объекта, то ADO создаст новый объект Connection для каждого
объекта Command, даже при использовании той же строчки. Объекты Command
используются для получения записей и создания объектов Recordset, для выполнения
больших операций или для изменения структуры БД. Используя коллекции, методы и
свойства объекта Command можно производить следующие действия:


указывать на установленное соединение и объект Command с помощью свойства
ActiveConnection;
определять тип команды (например, SQL-предложение), используя свойство
CommandText;





устанавливать время задержки выполнения команды, используя свойство
CommandTimeout;
с помощью свойства CommandType определять тип команды, описанной в свойстве
CommandText для определения приоритета выполнения;
с помощью свойства Preparedопределять, установлен ли приоритет выполнения
команд;
с помощью коллекции Parametersуправлять аргументами, передаваемыми
провайдеру и получаемыми от него;
выполнять команды и возвращать объект Recordset, используя метод Execute.
Объект Command содержит коллекцию Parameters. Используя метод Refresh коллекции
Parameters можно получить информацию о параметрах хранящихся процедур или для
параметризации запроса, определенным в объекте Command. Если не определен объект
Parameter и обращение идет к коллекции Parameters перед вызовом метода Refresh, то
ADO автоматически вызывает этот метод и заполняет коллекцию Parameters. Зная имена
свойств параметров хранимой процедуры или параметризированного запроса, который
нужно вызвать, можно создать объекты Parameter с соответствующими свойствами и,
используя метод Append, добавить их в коллекцию Parameters. Это позволит
устанавливать и возвращать значения параметров без вызова метода Refreshдля коллекции
Parameters для получения от провайдера информации о параметрах. Для удаления
объектов Parameter из коллекции Parameters используется метод Delete.
Используя различные коллекции, методы и свойства объектов Parameter можно
выполнять следующее:




устанавливать или возвращать имя параметра, используя свойство Name;
устанавливать или возвращать значение параметра, используя свойство Value;
устанавливать или возвращать характеристики параметров, используя свойства
Attributes и Direction, Precision, NumericScale, Size и Type;
используя метод AppendChunk можно посылать параметру длинные двоичные или
текстовые данные.
Для обращения к объекту Parameter по его порядковому номеру или имени можно
использовать следующие варианты:
command.Parameters(0)
command.Parameters("name")
command(0)
command("name")
command![name]
Объект 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 по умолчанию открывает курсор типа Forwardonlycursor. Пользователь может создавать столько объектов 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]
Коллекция Properties
Объекты ADO имеют два типа свойств: встроенные и динамические. Встроенные свойства
- это свойства, реализованные в ADO и доступные для любого нового объекта. Кроме
того, встроенные свойства не являются объектами Property в коллекции Properties,
поэтому пользователь может изменять их значения, но не может изменять их
характеристики или удалять их. Многие провайдеры OLEDB предоставляют
дополнительные свойства объектов. Такие дополнительные свойства называются
динамическими и являются объектами Property в коллекции Properties. Объекты
Property имеют четыре встроенных свойства:




свойство Name - строка, уникально идентифицирующая динамическое свойство;
свойство Type- целое число, определяющее тип данных динамического свойства;
свойство Value - переменная, содержащая значение динамического свойства;
свойство Attribute - значение типа Long, определяющее характеристики
динамического свойства.
Каждый объект Property соответствует какой-либо характеристике объекта ADO. Для
обращения к объекту Property из коллекции по имени используется следующий способ:
object.Properties("name")
Для обращения, например, к свойствуValue объекта Property используется такое же
выражение. По контексту обращения определяется: обращаетесь ли Вы к самому объекту
Property или к свойству Value объекта Property.
Download