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


Макросы для шаблонов поставщика OLE DB

Макросы поставщика шаблонов OLE DB предоставляют функциональные возможности в следующих категориях:

Макросы сопоставления набора свойств

Имя Описание
BEGIN_PROPERTY_SET Помечает начало набора свойств.
BEGIN_PROPERTY_SET_EX Помечает начало набора свойств.
BEGIN_PROPSET_MAP Помечает начало набора свойств, который может быть скрыт или определен вне области поставщика.
CHAIN_PROPERTY_SET Объединение групп свойств цепочек.
END_PROPERTY_SET Помечает конец набора свойств.
END_PROPSET_MAP Помечает конец карты набора свойств.
PROPERTY_INFO_ENTRY Задает определенное свойство в свойстве, заданное по умолчанию.
PROPERTY_INFO_ENTRY_EX Задает определенное свойство в свойстве, заданное вами значением. Кроме того, вы можете задать флаги и параметры.
PROPERTY_INFO_ENTRY_VALUE Задает определенное свойство в свойстве, заданное вами значением.

Макросы сопоставления столбцов

Имя Описание
BEGIN_PROVIDER_COLUMN_MAP Помечает начало записей сопоставления столбцов поставщика.
END_PROVIDER_COLUMN_MAP Помечает конец записей сопоставления столбцов поставщика.
PROVIDER_COLUMN_ENTRY Представляет определенный столбец, поддерживаемый поставщиком.
PROVIDER_COLUMN_ENTRY_FIXED Представляет определенный столбец, поддерживаемый поставщиком. Можно указать тип данных столбца.
PROVIDER_COLUMN_ENTRY_GN Представляет определенный столбец, поддерживаемый поставщиком. Можно указать размер столбца, тип данных, точность, масштаб и GUID набора строк схемы.
PROVIDER_COLUMN_ENTRY_LENGTH Представляет определенный столбец, поддерживаемый поставщиком. Размер столбца можно указать.
PROVIDER_COLUMN_ENTRY_STR Представляет определенный столбец, поддерживаемый поставщиком. Предполагается, что тип столбца является строкой.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH Представляет определенный столбец, поддерживаемый поставщиком. Как и PROVIDER_COLUMN_ENTRY_LENGTH, но также позволяет указать тип данных столбца, а также размер.
PROVIDER_COLUMN_ENTRY_WSTR Представляет определенный столбец, поддерживаемый поставщиком. Предполагается, что тип столбца является строкой символов Юникода.

Макросы набора строк схемы

Имя Описание
BEGIN_SCHEMA_MAP Помечает начало карты схемы.
END_SCHEMA_MAP Помечает конец карты схемы.
SCHEMA_ENTRY Связывает GUID с классом.

Требования

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

BEGIN_PROPERTY_SET

Помечает начало набора свойств в карте набора свойств.

Синтаксис

BEGIN_PROPERTY_SET(guid)

Параметры

guid
[in] GUID свойства.

Пример

См. раздел BEGIN_PROPSET_MAP.

BEGIN_PROPERTY_SET_EX

Помечает начало набора свойств в карте набора свойств.

Синтаксис

BEGIN_PROPERTY_SET_EX(guid, flags)

Параметры

guid
[in] GUID свойства.

flags
[in] UPROPSET_HIDDEN для любых наборов свойств, которые не требуется предоставлять, или UPROPSET_PASSTHROUGH для поставщика, предоставляющего свойства, определенные вне области действия поставщика.

Пример

См. раздел BEGIN_PROPSET_MAP.

BEGIN_PROPSET_MAP

Помечает начало записей карты набора свойств.

Синтаксис

BEGIN_PROPSET_MAP(Class)

Параметры

Class
[in] Класс, в котором указан этот набор свойств. Набор свойств можно указать в следующих объектах OLE DB:

Пример

Ниже приведен пример карты набора свойств:

BEGIN_PROPSET_MAP(CCustomSource)
    BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
        PROPERTY_INFO_ENTRY(ACTIVESESSIONS)
        PROPERTY_INFO_ENTRY(DATASOURCEREADONLY)
        PROPERTY_INFO_ENTRY(BYREFACCESSORS)
        PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY)
        PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER)
        PROPERTY_INFO_ENTRY(DSOTHREADMODEL)
        PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS)
        PROPERTY_INFO_ENTRY(USERNAME)
    END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
    BEGIN_PROPERTY_SET(DBPROPSET_DBINIT)
        PROPERTY_INFO_ENTRY(AUTH_PASSWORD)
        PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO)
        PROPERTY_INFO_ENTRY(AUTH_USERID)
        PROPERTY_INFO_ENTRY(INIT_DATASOURCE)
        PROPERTY_INFO_ENTRY(INIT_HWND)
        PROPERTY_INFO_ENTRY(INIT_LCID)
        PROPERTY_INFO_ENTRY(INIT_LOCATION)
        PROPERTY_INFO_ENTRY(INIT_MODE)
        PROPERTY_INFO_ENTRY(INIT_PROMPT)
        PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING)
        PROPERTY_INFO_ENTRY(INIT_TIMEOUT)
    END_PROPERTY_SET(DBPROPSET_DBINIT)
    CHAIN_PROPERTY_SET(CCustomSession)
    CHAIN_PROPERTY_SET(CCustomCommand)
END_PROPSET_MAP()

CHAIN_PROPERTY_SET

Эти макросы объединяют группы свойств.

Синтаксис

CHAIN_PROPERTY_SET(ChainClass)

Параметры

ChainClass
[in] Имя класса для цепочки свойств. Это класс, созданный мастером проектов ATL, который уже содержит карту (например, сеанс, команду или класс объекта источника данных).

Замечания

Вы можете связать набор свойств из другого класса к собственному классу, а затем получить доступ к свойствам непосредственно из класса.

Внимание

Используйте этот макрос с разреженным образом. Неправильное использование может привести к сбою тестов соответствия OLE DB.

END_PROPERTY_SET

Помечает конец набора свойств.

Синтаксис

END_PROPERTY_SET(guid)

Параметры

guid
[in] GUID свойства.

Пример

См. раздел BEGIN_PROPSET_MAP.

END_PROPSET_MAP

Помечает конец записей карты набора свойств.

Синтаксис

END_PROPSET_MAP()

Пример

См. раздел BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY

Представляет конкретное свойство в наборе свойств.

Синтаксис

PROPERTY_INFO_ENTRY(dwPropID)

Параметры

dwPropID
[входные данные] Значение DBPROPID , которое может использоваться вместе с GUID набора свойств для идентификации свойства.

Замечания

Этот макрос задает в качестве значения свойства типа DWORD значение по умолчанию, определенное в ATLDB.H. Чтобы задать свойству нужное вам значение, используйте PROPERTY_INFO_ENTRY_VALUE. Чтобы задать VARTYPE для свойства dbPROPFLAGS одновременно, используйте PROPERTY_INFO_ENTRY_EX.

Пример

См. раздел BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_EX

Представляет конкретное свойство в наборе свойств.

Синтаксис

PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)

Параметры

dwPropID
[входные данные] Значение DBPROPID , которое может использоваться вместе с GUID набора свойств для идентификации свойства.

vt
[входные данные] VARTYPE этой записи свойства. (Определено в wtypes.h)

dwFlags
[входные данные] Значение DBPROPFLAGS , описывающее эту запись свойства.

значение
[входные данные] Значение свойства с типом DWORD.

options
DBPROPOPTIONS_REQUIRED или DBPROPOPTIONS_SETIFCHEAP. Как правило, поставщику не нужно задавать параметры , так как он устанавливается потребителем.

Замечания

С помощью этого макроса можно напрямую указать значение свойства типа DWORD , а также параметры и флаги. Чтобы задать свойству значение по умолчанию, определенное в ATLDB. H, используйте PROPERTY_INFO_ENTRY. Чтобы задать свойству значение по своему усмотрению без параметров или флагов, используйте PROPERTY_INFO_ENTRY_VALUE.

Пример

См. раздел BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_VALUE

Представляет конкретное свойство в наборе свойств.

Синтаксис

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

Параметры

dwPropID
[входные данные] Значение DBPROPID , которое может использоваться вместе с GUID набора свойств для идентификации свойства.

значение
[входные данные] Значение свойства с типом DWORD.

Замечания

С помощью этого макроса можно напрямую указать значение свойства типа DWORD. Чтобы задать для свойства значение по умолчанию, определенное в ATLDB. H, используйте PROPERTY_INFO_ENTRY. Чтобы задать значение, флаги и параметры свойства, используйте PROPERTY_INFO_ENTRY_EX.

Пример

См. раздел BEGIN_PROPSET_MAP.

BEGIN_PROVIDER_COLUMN_MAP

Помечает начало записей сопоставления столбцов поставщика.

Синтаксис

BEGIN_PROVIDER_COLUMN_MAP(theClass)

Параметры

TheClass
[in] Имя класса, к которому принадлежит эта карта.

Пример

Ниже приведен пример карты столбцов поставщика:

BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile)
    PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
    PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
    PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
    PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
    PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()

END_PROVIDER_COLUMN_MAP

Помечает конец записей сопоставления столбцов поставщика.

Синтаксис

END_PROVIDER_COLUMN_MAP()

Пример

См . BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

member
[in] Переменная-член в dataClass соответствии с столбцом.

PROVIDER_COLUMN_ENTRY_FIXED

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

dbtype
[in] Тип данных в DBTYPE.

member
[in] Переменная-член, в dataClass которой хранятся данные.

Замечания

Позволяет указать тип данных столбца.

Пример

См . BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_GN

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

flags
[in] Указывает, как возвращаются данные. См. dwFlags описание структур DBBINDING.

colSize
[in] Размер столбца.

dbtype
[in] Указывает тип данных значения. См. wType описание структур DBBINDING.

precision
[in] Указывает точность, используемую при получении данных, если dbType DBTYPE_NUMERIC или DBTYPE_DECIMAL. См. bPrecision описание структур DBBINDING.

scale
[in] Указывает масштаб, используемый при получении данных, если dbType DBTYPE_NUMERIC или DBTYPE_DECIMAL. См. bScale описание структур DBBINDING.

guid
GUID набора строк схемы. См . раздел IDBSchemaRowset в справочнике программиста OLE DB для списка наборов строк схемы и их идентификаторов GUID.

Замечания

Позволяет указать размер столбца, тип данных, точность, масштаб и GUID набора строк схемы.

PROVIDER_COLUMN_ENTRY_LENGTH

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

size
[in] Размер столбца в байтах.

member
[in] Переменная-член, в dataClass которой хранятся данные столбца.

Замечания

Позволяет указать размер столбца.

Пример

См . BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_STR

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

member
[in] Переменная-член в классе данных, в которой хранятся данные.

Замечания

Используйте этот макрос, если предполагается, что данные столбца DBTYPE_STR.

Пример

См . BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

dbtype
[in] Тип данных в DBTYPE.

size
[in] Размер столбца в байтах.

member
[in] Переменная-член в классе данных, в которой хранятся данные.

Замечания

Аналогично PROVIDER_COLUMN_ENTRY_LENGTH, но также позволяет указать тип данных столбца, а также размер.

PROVIDER_COLUMN_ENTRY_WSTR

Представляет определенный столбец, поддерживаемый поставщиком.

Синтаксис

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Параметры

name
[in] Имя столбца.

порядковая
[in] Номер столбца. Если столбец не является столбцом закладки, номер столбца не должен иметь значение 0.

member
[in] Переменная-член в классе данных, в которой хранятся данные.

Замечания

Используйте этот макрос, если данные столбца являются строкой символов Юникода null, DBTYPE_WSTR.

BEGIN_SCHEMA_MAP

Обозначает начало карты схемы.

Синтаксис

BEGIN_SCHEMA_MAP(SchemaClass);

Параметры

SchemaClass
Класс, содержащий MAP. Обычно это будет класс сеанса.

Замечания

Дополнительные сведения о наборах строк схемы см . в idBSchemaRowset в пакете SDK для Windows.

END_SCHEMA_MAP

Обозначает конец карты схемы.

Синтаксис

END_SCHEMA_MAP()

Замечания

Дополнительные сведения см. в разделе "Класс IDBSchemaRowsetImpl".

SCHEMA_ENTRY

Связывает GUID с классом.

Синтаксис

SCHEMA_ENTRY(guid,
   rowsetClass);

Параметры

guid
GUID набора строк схемы. См . раздел IDBSchemaRowset в справочнике программиста OLE DB для списка наборов строк схемы и их идентификаторов GUID.

rowsetClass
Класс, который будет создан для представления набора строк схемы.

Замечания

IDBSchemaRowsetImpl может запросить карту для списка идентификаторов GUID или создать набор строк, если он задан GUID. Создаваемый набор IDBSchemaRowsetImpl строк схемы аналогичен стандартному CRowsetImplпроизводного класса, за исключением того, что он должен предоставить метод, имеющий следующую сигнатуру Execute :

HRESULT Execute (LONG* pcRowsAffected,
    ULONG cRestrictions,
    const VARIANT* rgRestrictions);

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

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

Мастер также добавляет три соответствующих записи в карту схемы. Дополнительные сведения об использовании мастера для создания поставщика шаблонов OLE DB см. в статье "Создание поставщика ".

См. также

Шаблоны поставщика OLE DB
Архитектура шаблона поставщика OLE DB
Создание поставщика OLE DB
Ссылка на шаблоны поставщика OLE DB
Макросы для шаблонов поставщика OLE DB