Основы 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.
|