Интерфейс OLE DB
Интерфейс OLE DB является частью универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access), позволяя осуществлять доступ как к реляционным, так и нереляционным источникам данных (например, файловая система, данные электронной почты, многомерные хранилища данных и другие).
Для доступа к источнику данных с помощью OLE DB требуется, чтобы на компьютере, где используется клиентское приложение, был установлен OLE DB-провайдер для требуемой СУБД. OLE DB-провайдер представляет собой DLL-библиотеку, используемую для доступа к источнику данных. Для каждого типа СУБД нужен собственный OLE DB-провайдер, так как эти провайдеры базируются на функциях клиентских API, разных для разных СУБД (как и ODBC-драйверы).
Среди OLE DB-провайдеров для разных источников данных имеется также один специальный провайдер Microsoft OLE DB Provider for ODBC Drivers. Этот провайдер использует не API клиентской части некоторой СУБД, а интерфейс ODBC API. Естественно, используется он вместе с ODBC-драйвером выбранной СУБД.
В спецификации OLE DB определен набор COM-интерфейсов (COM – Component Object Model, компонентная модель объектов Microsoft), инкапсулирующих различные сервисы управления данными и предоставляющих однотипный доступ к перечисленным выше данным. Эти интерфейсы могут быть использованы в приложениях, предоставляющих доступ к данным.
Самый верхний уровень составляют три главных компонента OLE DB: потребители (consumers), провайдеры данных (data providers) и сервисные компоненты (service components).
Любой компонент программного обеспечения, применяющий интерфейсы OLE DB, является потребителем. Потребители могут обращаться к данным посредством ActiveX Data Objects, представляющих собой высокоуровневый интерфейс к OLE DB, или применять OLE DB непосредственно, используя OLE DB-провайдер.
Провайдер – это часть программного обеспечения, в которой реализованы интерфейсы OLE DB. Существуют два типа OLE DB-провайдеров – провайдеры данных и сервисные компоненты.
Провайдером данных является компонент программного обеспечения, манипулирующий данными. Он располагается между потребителем данных и базой данных. В OLE DB все провайдеры представляют данные в табличном формате в виде виртуальных таблиц. Провайдер данных выполняет следующие функции:
• получение от потребителя запросов на получение или модификацию данных;
• получение данных из базы данных или их модификацию в базе данных;
• возвращение данных потребителю.
Провайдер сервисов (сервисный компонент) реализует расширенную функциональность, не поддерживаемую обычными провайдерами данных, например сортировку и фильтрацию данных, обработку транзакций и SQL-запросов, управление курсором. Сервисный компонент может обращаться к хранилищу данных непосредственно или с помощью соответствующего провайдера данных – в этом случае провайдер сервисов является одновременно и провайдером, и потребителем.
Объектная модель OLE DB содержит четыре ключевых объекта:
• DataSource;
• Session;
• Command;
• Rowset.
Объект DataSource применяется потребителями данных для соединения с провайдером. Объект DataSource инкапсулирует информацию, связанную с соединением (включая имя пользователя и пароль). Основное назначение этого объекта – предоставлять данные из источника данных потребителю.
Объект Session предоставляет контекст для транзакций, может генерировать наборы данных (rowsets) из источников данных, а также команды для запросов к источнику данных. С одним объектом DataSource может быть связано несколько объектов Session.
Объект Command используется для выполнения команд, представляющих собой строки, передаваемые от потребителя данных объекту DataSource для выполнения. В большинстве случаев такая команда представляет собой SQL-предложение SELECT, однако в общем случае это может быть любое другое SQL-предложение. Команды могут содержать параметры. Одна сессия может порождать несколько команд. Результатом выполнения команды обычно является новый объект Rowset. С одним объектом DataSource может быть связано несколько объектов Command.
Объект Rowset (набор данных) позволяет OLE DB-провайдеру данных представлять данные из источников данных в табличном формате, то есть в виде набора строк, содержащих одну или несколько колонок. Этот объект может быть результатом выполнения команды или может быть сгенерирован непосредственно провайдером данных, если провайдер не поддерживает команд. Все провайдеры данных имеют средства непосредственного создания наборов данных. Объект Rowset может быть также использован для обновления, добавления или удаления строк – это зависит только от функциональности провайдера данных.
Помимо четырех основных объектов, перечисленных выше, существуют и другие объекты OLE DB. Они нужны для перечисления источников данных, управления транзакциями, обработки ошибок и другого.
Объект Enumerator используется для получения списка доступных объектов, обеспечивающих доступ к источникам данных (OLE DB-провайдеров). Объект Transaction поддерживает транзакции в источнике данных. Объект Error в дополнение к кодам возврата и информации о состоянии, свидетельствующей об успехе или неуспехе вызова любого из методов OLE DB, позволяет OLE DB-провайдерам предоставлять расширенную информацию об ошибках.
Добавить комментарий