Макросы для шаблонов поставщика 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