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


IDBSchemaRowsetImpl - класс

Предоставляет реализацию для наборов строк схемы.

Синтаксис

template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset

Параметры

SessionClass
Класс, по которому наследуется IDBSchemaRowsetImpl . Как правило, этот класс будет классом сеанса пользователя.

Требования

Заголовок: atldb.h

Участники

Методы

Имя Описание
CheckRestrictions Проверяет допустимость ограничений относительно набора строк схемы.
CreateSchemaRowset Реализует функцию создателя COM-объекта для объекта, указанного параметром шаблона.
SetRestrictions Указывает, какие ограничения поддерживаются в определенном наборе строк схемы.

Методы интерфейса

Имя Описание
GetRowset Возвращает набор строк схемы.
GetSchemas Возвращает список наборов строк схемы, доступных для IDBSchemaRowsetImpl::GetRowset.

Замечания

Этот класс реализует интерфейс IDBSchemaRowset и шаблонизируемую функцию создателя CreateSchemaRowset.

OLE DB использует наборы строк схемы для возврата сведений о данных в поставщике. Такие данные часто называются метаданными. По умолчанию поставщик должен всегда поддерживать DBSCHEMA_TABLESиDBSCHEMA_COLUMNSDBSCHEMA_PROVIDER_TYPES, как описано в idBSchemaRowset в справочнике программиста OLE DB. Наборы строк схемы назначаются в карте схемы. Сведения о карте записей схемы см. в разделе SCHEMA_ENTRY.

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

Сведения о поддержке наборов строк схемы в поставщике см. в разделе Поддержка наборов строк схемы.

Дополнительные сведения о наборах строк схемы см. в разделе Наборы строк схемы в справочнике программиста OLE DB.

IDBSchemaRowsetImpl::CheckRestrictions

Проверяет допустимость ограничений относительно набора строк схемы.

Синтаксис

HRESULT CheckRestrictions(REFGUID rguidSchema,
   ULONG cRestrictions,  const VARIANT rgRestrictions[]);

Параметры

rguidSchema
[входные данные] Ссылка на запрошенный GUID набора строк схемы (например, DBSCHEMA_TABLES).

cRestrictions
[входные данные] Число ограничений, переданных потребителем для набора строк схемы.

rgRestrictions
[входные данные] Массив длиной cRestrictions для задаваемых значений ограничений. Дополнительные сведения см. в описании параметра rgRestrictions в SetRestrictions.

Замечания

Используйте CheckRestrictions для проверки допустимости ограничений для набора строк схемы. Он проверяет ограничения для DBSCHEMA_TABLESDBSCHEMA_COLUMNSнаборов строк и DBSCHEMA_PROVIDER_TYPES схем. Вызовите его, чтобы определить правильность вызова IDBSchemaRowset::GetRowset потребителя. Если необходима поддержка наборов строк схемы, отличных от перечисленных выше, создайте собственную функцию для выполнения этой задачи.

CheckRestrictions определяет, вызывает ли потребитель GetRowset с правильным ограничением и правильным типом ограничения (например, VT_BSTR для строки), которую поддерживает поставщик. Он также определяет, поддерживается ли правильное количество ограничений. По умолчанию CheckRestrictions будет обращаться к поставщику через вызов SetRestrictions , ограничения которого он поддерживает в заданном наборе строк. Затем он сравнит ограничения от потребителя с ограничениями, поддерживаемыми поставщиком. Результатом будет успешное или неудачное выполнение.

Дополнительные сведения о наборах строк схемы см. в разделе IDBSchemaRowset в справочнике программиста OLE DB в пакете SDK для Windows.

IDBSchemaRowsetImpl::CreateSchemaRowset

Реализует функцию создателя COM-объекта для объекта, указанного параметром шаблона.

Синтаксис

template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown** ppRowset,
   SchemaRowsetClass*& pSchemaRowset);

Параметры

pUnkOuter
[in] Внешний IUnknown при агрегации, в противном случае — ЗНАЧЕНИЕ NULL.

cRestrictions
[входные данные] Число ограничений, применяемых к набору строк.

rgRestrictions
[входные данные] Массив cRestrictionsVARIANT, применяемых к набору строк.

riid
[in] Интерфейс запросаInterface для выходных данных IUnknown.

cPropertySets
[входные данные] Число задаваемых наборов свойств.

rgPropertySets
[входные данные] Массив структур DBPROPSET , определяющих задаваемые свойства.

ppRowset
[out] Исходящий IUnknown запрос, запрошенный riid. Это IUnknown интерфейс объекта набора строк схемы.

pSchemaRowset
[выходные данные] Указатель на экземпляр класса набора строк схемы. Как правило, этот параметр не используется, но может применяться, если необходимо выполнить дополнительные действия в наборе строк схемы перед передачей его в COM-объект. Время существования pSchemaRowset привязано к ppRowset.

Возвращаемое значение

Стандартное значение HRESULT.

Замечания

Эта функция реализует универсальный создатель для всех типов наборов строк схемы. Как правило, пользователь не вызывает эту функцию. Ее вызывает реализация карты схемы.

IDBSchemaRowsetImpl::SetRestrictions

Указывает, какие ограничения поддерживаются в определенном наборе строк схемы.

Синтаксис

void SetRestrictions(ULONG cRestrictions,
   GUID* /* rguidSchema */,
   ULONG* rgRestrictions);

Параметры

cRestrictions
[in] Количество ограничений в массиве rgRestrictions и количество идентификаторов GUID в массиве rguidSchema .

rguidSchema
[входные данные] Массив GUID наборов строк схемы, для которого требуется извлечь ограничения. Каждый элемент массива содержит GUID одного набора строк схемы (например, DBSCHEMA_TABLES).

rgRestrictions
[входные данные] Массив длиной cRestrictions для задаваемых значений ограничений. Каждый элемент соответствует ограничениям в наборе строк схемы, определяемом по GUID. Если набор строк схемы не поддерживается поставщиком, элементу присваивается нулевое значение. В противном случае значение ULONG значение содержит битовую маску, которая представляет ограничения, поддерживаемые в этом наборе строк схемы. Дополнительные сведения о том, какие ограничения соответствуют определенному набору строк схемы, см. в таблице ИДЕНТИФИКАТОРов наборов строк схемы в IDBSchemaRowset в справочнике программиста OLE DB в пакете SDK для Windows.

Замечания

Вызовы IDBSchemaRowset SetRestrictions объекта для определения ограничений, которые вы поддерживаете в определенном наборе строк схемы (он вызывается GetSchemas через переадресованный указатель). Ограничения позволяют выбирать только совпадающие строки (например, поиск всех столбцов в таблице MyTable). Ограничения являются необязательными, и если не поддерживается ни одно ограничение (по умолчанию), всегда возвращаются все данные.

Реализация этого метода по умолчанию задает для элементов массива rgRestrictions значение 0. Чтобы задать ограничения, отличные от используемых по умолчанию, нужно переопределить установку по умолчанию в классе сеанса.

Сведения о реализации поддержки наборов строк схемы см. в разделе Поддержка наборов строк схемы.

Пример поставщика, поддерживающего наборы строк схемы, см. в примере UpdatePV .

Дополнительные сведения о наборах строк схемы см. в разделе IDBSchemaRowset в справочнике программиста OLE DB в пакете SDK для Windows.

IDBSchemaRowsetImpl::GetRowset

Возвращает набор строк схемы.

Синтаксис

STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
   REFGUID rguidSchema,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown **ppRowset);

Параметры

pUnkOuter
[in] Внешний IUnknown объект при агрегации; в противном случае — ЗНАЧЕНИЕ NULL.

rguidSchema
[входные данные] Ссылка на запрошенный GUID набора строк схемы (например, DBSCHEMA_TABLES).

cRestrictions
[входные данные] Число ограничений, применяемых к набору строк.

rgRestrictions
[входные данные] Массив типов cRestrictionsVARIANT, которые представляют ограничения.

riid
[входные данные] IID для запроса созданного набора строк схемы.

cPropertySets
[входные данные] Число задаваемых наборов свойств.

rgPropertySets
[входные/выходные данные] Массив структур DBPROPSET , задаваемых в созданном наборе строк схемы.

ppRowset
[выходные данные] Указатель на запрошенный интерфейс в созданном наборе строк схемы.

Замечания

Для реализаций этого метода пользователь должен иметь карту схемы в классе сеанса. Используя сведения карты схемы, создает объект набора строк, GetRowset если параметр rguidSchema равен одному из записей графического интерфейса карты. Описание карты записей см. в разделе SCHEMA_ENTRY .

См . раздел IDBSchemaRowset::GetRowset в пакете SDK для Windows.

IDBSchemaRowsetImpl::GetSchemas

Возвращает список наборов строк схемы, доступных для IDBSchemaRowsetImpl::GetRowset.

Синтаксис

STDMETHOD (GetSchema s )(ULONG * pcSchemas,
   GUID ** prgSchemas,
   ULONG** prgRest);

Параметры

pcSchemas
[выходные данные] Указатель на ULONG , заполняемый количеством схем.

prgSchemas
[выходные данные] Указатель на массив идентификаторов GUID, который заполняется указателем на массив идентификаторов GUID набора строк схемы.

prgRest
[выходные данные] Указатель на массив ULONG, который должен быть заполнен массивом ограничений.

Замечания

Этот метод возвращает массив всех наборов строк схемы, поддерживаемых поставщиком. См . раздел IDBSchemaRowset::GetSchemas в пакете SDK для Windows.

Для реализаций этой функции пользователь должен иметь карту схемы в классе сеанса. Затем с помощью сведений о карте схемы выдается массив идентификаторов GUID для схемы на карте. Он представляет схемы, поддерживаемые поставщиком.

См. также

Классы Rowset и Typedef схемы
Поддержка наборов строк схемы
SCHEMA_ENTRY
UpdatePV