CCustomSession (CustomSess.H)
CustomSess.H содержит объявление и реализацию для объекта сеанса OLE DB. Объект источника данных создает объект сеанса и представляет беседу между потребителем и поставщиком. Для одного источника данных можно открыть несколько одновременных сеансов. Список наследования для CCustomSession
следующих элементов:
/////////////////////////////////////////////////////////////////////////
// CCustomSession
class ATL_NO_VTABLE CCustomSession :
public CComObjectRootEx<CComSingleThreadModel>,
public IGetDataSourceImpl<CCustomSession>,
public IOpenRowsetImpl<CCustomSession>,
public ISessionPropertiesImpl<CCustomSession>,
public IObjectWithSiteSessionImpl<CCustomSession>,
public IDBSchemaRowsetImpl<CCustomSession>,
public IDBCreateCommandImpl<CCustomSession, CCustomCommand>
Объект сеанса наследует от IGetDataSource
, IOpenRowset
и ISessionProperties
IDBCreateCommand
. Интерфейс IGetDataSource
позволяет сеансу получить созданный источник данных. Это полезно, если необходимо получить свойства из созданного источника данных или другой информации, которую может предоставить источник данных. Интерфейс ISessionProperties
обрабатывает все свойства сеанса. Интерфейсы IOpenRowset
используются IDBCreateCommand
для работы базы данных. Если поставщик поддерживает команды, он реализует IDBCreateCommand
интерфейс. Он используется для создания объекта команды, который может выполнять команды. Поставщик всегда реализует IOpenRowset
объект. Он используется для создания набора строк из поставщика. Это набор строк по умолчанию (например, "select * from mytable"
от поставщика).
Мастер также создает три класса сеанса: CCustomSessionColSchema
, CCustomSessionPTSchema
и CCustomSessionTRSchema
. Эти сеансы используются для наборов строк схемы. Наборы строк схемы позволяют поставщику возвращать метаданные потребителю без необходимости выполнять запрос или получение данных. Получение метаданных может быть гораздо быстрее, чем поиск возможностей поставщика.
Спецификация OLE DB требует, чтобы поставщики, реализующие IDBSchemaRowset
интерфейс, поддерживали три типа наборов строк схемы: DBSCHEMA_COLUMNS, DBSCHEMA_PROVIDER_TYPES и DBSCHEMA_TABLES. Мастер создает реализации для каждого набора строк схемы. Каждый класс, созданный мастером, содержит Execute
метод. В этом Execute
методе можно вернуть данные поставщику о том, какие таблицы, столбцы и типы данных поддерживаются. Эти данные известны во время компиляции.