Поделиться через


Шаблоны поставщика OLE DB (С++)

Обновлен: Ноябрь 2007

OLE DB является важной частью стратегии универсального доступа к данным Майкрософт. Конструкция OLE DB позволяет совершать высокопроизводительный доступ к данным из любого источника данных. Любые табличные данные можно просмотреть через OLE DB независимо от того, были ли они извлечены из базы данных. Эта гибкость дает большую производительность.

Как объясняется в разделе Объекты-получатели и поставщики OLE DB, в OLE DB используется концепция объектов-получателей и поставщиков. Объекты-получатели запрашивают данные; поставщик возвращает данные объекту-получателю в табличном формате. С программной точки зрения, самой важное следствие этой модели состоит в том, что поставщик должен реализовать любой вызов объекта-получателя.

Что такое поставщик?

Поставщик OLE DB является набором COM-объектов, которые обслуживают вызовы интерфейса из пользовательского объекта, передавая данные в табличном формате из долговременного источника (который называется хранилищем данных) объекту-получателю.

Поставщики могут быть простыми или сложными. Поставщик может поддерживать минимальное число функциональных возможностей или быть полнофункциональным поставщиком для производственного применения с помощью реализации большого числа интерфейсов. Поставщик может возвратить таблицу, позволить клиенту определить формат этой таблицы и выполнить операции с этими данными.

Каждый поставщик реализует стандартный набор COM-объектов, чтобы обработать запросы от клиента со стандартным значением, которое означает, что клиент OLE DB может получить доступ к данным из любого поставщика, независимо от используемого языка (С++, Basic).

Каждый COM-объект содержит несколько интерфейсов, некоторые из них являются обязательными, другие необязательными. С помощью реализации обязательных интерфейсов поставщик гарантирует минимальный уровень функциональности (который называется совместимостью), который должен быть доступен для использования любым клиентом. Поставщик может реализовать необязательные интерфейсы, чтобы предоставить дополнительную функциональность. В разделе Архитектура шаблона поставщика OLE DB детально описаны эти интерфейсы. Чтобы определить использует ли поставщик данный интерфейс, клиент должен всегда вызывать QueryInterface.

Уровень поддержки спецификации OLE DB

Шаблоны поставщика OLE DB поддерживают версию спецификации OLE DB 2.7. С помощью шаблонов поставщика OLE DB можно реализовать поставщик, совместимый с уровнем 0. Например, пример "Provider" использует шаблоны для реализации управляющего сервера, не являющегося сервером SQL (MS-DOS) и исполняющего команду DOS DIR для запроса файловой системы. Пример "Provider" возвращает сведения о каталоге в наборе строк, что является стандартным механизмом OLE DB для возвращения табличных данных.

Простейшим типом поставщика, поддерживаемого шаблонами OLE DB, является поставщик, позволяющий только считывать данные без команд. Поставщики с командами также поддерживаются, а также возможности закладок и чтения/записи. Можно реализовать поставщика с возможностью чтения или записи с помощью написания дополнительного кода. Динамические наборы строк и транзакции не поддерживаются текущей версией, однако, при необходимости можно их добавить.

Создание поставщика OLE DB.

Не всегда есть необходимость создавать собственного поставщика; Корпорация Майкрософт предоставляет несколько стандартных поставщиков в диалоговом окне Свойства связи с данными в Visual C++. Главная причина создания поставщика OLE DB состоит в том, чтобы воспользоваться преимуществами стратегии универсального доступа к данным: Некоторые преимущества перечислены ниже:

  • Доступ к данным посредством любых языков, таких как C++, Basic и языка сценариев VBScript. Это позволяет разным программистам организации получить доступ к одинаковым данным одним способом независимо от того, какой язык используется.

  • Предоставление данных другим источникам данных, таким как SQL Server, Excel и Access. Это может быть очень полезно при необходимости передачи данных между разными форматами.

  • Участие в операциях перекрестного (разнородного) источника данных. Это может быть очень эффективным способом хранения данных. Используя поставщики OLE DB, можно хранить данные в их собственном формате и иметь возможность доступа к ним с помощью одной операции.

  • Добавление дополнительных возможностей к данным, таких как обработка данных.

  • Увеличение производительности доступа к данным с помощью контроля над изменениями данных.

  • Повышение надежности. Если имеется собственный формат данных, к которым может получить доступ только один программист, то существует определенный риск. Используя поставщики OLE DB, можно открыть этот собственный формат для всех программистов.

Поставщики, позволяющие только считывать данные, и обновляемые поставщики

Поставщики значительно отличаются друг от друга по сложности и функциональности. Полезно разделить поставщиков на поставщиков, позволяющие только считывать данные, и обновляемых поставщиков:

  • В Visual C++ 6.0 поддерживались только поставщики, позволяющие только считывать данные. В разделе Создания поставщика OLE DB описано как создать поставщик, позволяющий только считывать данные.

  • Visual C++ .NET поддерживает обновляемых поставщиков, которые могут обновлять (выполнять запись) хранилище данных. Дополнительные сведения об обновляемых поставщиках, см. в разделе Создание обновляемого поставщика; пример UpdatePV является примером обновляемого поставщика.

Дополнительные сведения см. в следующих разделах:

См. также

Ссылки

Документация OLE DB SDK

Справочник программиста по OLE DB

Другие ресурсы

Доступ к данным (C++)