|
Основы ADO
Технология Microsoft ActiveX Data Objects
обеспечивает универсальный доступ к источникам данных
из приложений БД. Такую возможность предоставляют функции
набора интерфейсов, созданные на основе общей модели
объектов СОМ и описанные в спецификации OLE DB.
Технология ADO и интерфейсы OLE DB
обеспечивают для приложений единый способ доступа к
источникам данных различных типов (рис. 19.1). Например,
приложение, использующее ADO, может применять одинаково
сложные операции и к данным, хранящимся на корпоративном
сервере SQL, и к электронным таблицам, и локальным СУБД.
Запрос SQL, направленный любому источнику данных через
ADO, будет выполнен.
Рис. 19.1. Схема
доступа к данным через ADO
Возникает вопрос: каким образом источники
данных смогут выполнить этот запрос?
За серверы БД беспокоиться не стоит,
обработка запросов SQL — это их основная обязанность.
Но как быть с файловыми последовательностями, электронными
таблицами, файлами электронной почты и т. д.? Здесь
на помощь приходят механизмы ADO и интерфейсы OLE DB.
OLE DB представляет собой набор специализированных
объектов СОМ, инкапсулирующих стандартные функции обработки
данных, и специализированные функции конкретных источников
данных и интерфейсов, обеспечивающих передачу данных
между объектами.
Согласно терминологии ADO, любой источник
данных (база данных, электронная таблица, файл) называется
хранилищем данных, с которым при помощи провайдера данных
взаимодействует приложение. Минимальный набор компонентов
приложения может включать объект соединения, объект
набора данных, объект процессора запросов.
Примечание
Объекты OLE DB создаются и функционируют
так же, как и другие объекты СОМ. Каждому объекту
соответствует идентификатор класса CLSID, хранящийся
в системном реестре. Для создания объекта используется
метод CoCreateinstance и соответствующая
фабрика класса. Объекту соответствует набор интерфейсов,
к методам которых можно обращаться после создания
объекта.
В результате приложение обращается
не прямо к источнику данных, а к объекту OLE DB, который
"умеет" представить данные (например, из файла
электронной почты) в виде таблицы БД или результата
выполнения запроса SQL.
Технология ADO в целом включает в себя
не только сами объекты OLE DB, но и механизмы, обеспечивающие
взаимодействие объектов с данными и приложениями. На
этом уровне важнейшую роль играют провайдеры ADO, координирующие
работу приложений с хранилищами данных различных типов.
Такая архитектура позволяет сделать
набор объектов и интерфейсов открытым и расширяемым.
Набор объектов и соответствующий провайдер может быть
создан для любого хранилища данных без внесения изменений
в исходную структуру ADO. При этом существенно расширяется
само понятие данных — ведь можно разработать набор объектов
и интерфейсов и для нетрадиционных табличных данных.
Например, это могут быть графические данные геоинформационных
систем, древовидные структуры из системных реестров,
данные CASE-инструментов и т. д.
Так как технология ADO основана на
стандартных интерфейсах СОМ, которые являются системным
механизмом Windows, это сокращает общий объем работающего
программного кода и позволяет распространять приложения
БД без вспомогательных программ и библиотек.
Примечание
Нижеследующее описание спецификации
OLE DB представлено в соответствии с официальной терминологией
Microsoft для данной предметной области.
Спецификация OLE DB различает следующие
типы объектов, которые будут рассмотрены ниже.
- Перечислитель (Enumerator)
выполняет поиск источников данных или других перечислителей.
Используется для обеспечения функционирования провайдеров
ADO.
- Объект-источник данных (Data
Source Object) представляет хранилище данных.
- Сессия (Session) объединяет
совокупность объектов, обращающихся к одному хранилищу
данных.
- Транзакция (Trasaction) инкапсулирует
механизм выполнения транзакции.
- Команда (Command) содержит
текст команды и обеспечивает ее выполнение. Командой
может быть запрос SQL, обращение к таблице БД и т.
д.
- Набор рядов (Rowset) представляет
собой совокупность строк данных, являющихся результатом
выполнения команды ADO.
- Объект-ошибка (Error) содержит
информацию об исключительной ситуации.
Рассмотрим функциональные возможности
основных объектов и интерфейсов OLE DB.
|