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


Макросы и глобальные функции для шаблонов потребителей OLE DB

Шаблоны потребителей OLE DB включают следующие макросы и глобальные функции:

Глобальные функции

Имя Описание
AtlTraceErrorRecords Дамп сведений об ошибке OLE DB на устройство дампа, если возвращается ошибка.

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

Имя Описание
BEGIN_ACCESSOR Помечает начало записи метода доступа.
BEGIN_ACCESSOR_MAP Отмечает начало карты записей метода доступа.
END_ACCESSOR Помечает конец записи метода доступа.
END_ACCESSOR_MAP Помечает конец записей карты доступа.

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

Имя Описание
BEGIN_COLUMN_MAP Помечает начало записей карты столбцов в классе записей пользователя.
BLOB_ENTRY Используется для привязки двоичного большого объекта (BLOB).
BLOB_ENTRY_LENGTH Сообщает длину столбца данных BLOB.
BLOB_ENTRY_LENGTH_STATUS Сообщает длину и состояние столбца данных BLOB.
BLOB_ENTRY_STATUS Сообщает о состоянии столбца данных BLOB.
BLOB_NAME Используется для привязки двоичного большого объекта по имени столбца.
BLOB_NAME_LENGTH Сообщает длину столбца данных BLOB.
BLOB_NAME_LENGTH_STATUS Сообщает длину и состояние столбца данных BLOB.
BLOB_NAME_STATUS Сообщает о состоянии столбца данных BLOB.
BOOKMARK_ENTRY Представляет запись закладки в наборе строк. Запись закладки — это специальный тип записи столбца.
COLUMN_ENTRY Представляет привязку к определенному столбцу в базе данных.
COLUMN_ENTRY_EX Представляет привязку к конкретному столбцу в базе данных. Поддерживает параметры типа, длины, точности, масштабирования и состояния.
COLUMN_ENTRY_LENGTH Представляет привязку к конкретному столбцу в базе данных. Поддерживает переменную длины.
COLUMN_ENTRY_LENGTH_STATUS Представляет привязку к конкретному столбцу в базе данных. Поддерживает параметры состояния и длины .
COLUMN_ENTRY_PS Представляет привязку к конкретному столбцу в базе данных. Поддерживает параметры точности и масштабирования .
COLUMN_ENTRY_PS_LENGTH Представляет привязку к конкретному столбцу в базе данных. Поддерживает переменную длины, точность и масштабируемые параметры.
COLUMN_ENTRY_PS_LENGTH_STATUS Представляет привязку к конкретному столбцу в базе данных. Поддерживает переменные состояния и длины , точность и параметры масштабирования .
COLUMN_ENTRY_PS_STATUS Представляет привязку к конкретному столбцу в базе данных. Поддерживает переменную состояния, точность и параметры масштабирования.
COLUMN_ENTRY_STATUS Представляет привязку к конкретному столбцу в базе данных. Поддерживает переменную состояния.
COLUMN_ENTRY_TYPE Представляет привязку к определенному столбцу в базе данных. Поддерживает параметр типа .
COLUMN_ENTRY_TYPE_SIZE Представляет привязку к конкретному столбцу в базе данных. Поддерживает параметры типа и размера .
COLUMN_NAME Представляет привязку к определенному столбцу в базе данных по имени.
COLUMN_NAME_EX Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию типа данных, размера, точности, масштаба, длины столбца и состояния столбца.
COLUMN_NAME_LENGTH Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию длины столбца.
COLUMN_NAME_LENGTH_STATUS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию длины и состояния столбца.
COLUMN_NAME_PS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию точности и масштабирования.
COLUMN_NAME_PS_LENGTH Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию точности, масштабирования и длины столбца.
COLUMN_NAME_PS_LENGTH_STATUS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию точности, масштабирования, длины столбца и состояния столбца.
COLUMN_NAME_PS_STATUS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию состояния точности, масштабирования и столбца.
COLUMN_NAME_STATUS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию состояния столбца.
COLUMN_NAME_TYPE Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию типа данных.
COLUMN_NAME_TYPE_PS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию типа данных, точности и масштабирования.
COLUMN_NAME_TYPE_SIZE Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию типа данных и размера.
COLUMN_NAME_TYPE_STATUS Представляет привязку к определенному столбцу в базе данных по имени. Поддерживает спецификацию типа данных и состояния столбца.
END_COLUMN_MAP Помечает конец записей карты столбцов.

Макросы команд

Имя Описание
DEFINE_COMMAND Указывает команду, которая будет использоваться для создания набора строк при использовании класса CCommand . Принимает только типы строк, соответствующие указанному типу приложения (ANSI или Юникоду). Рекомендуется использовать DEFINE_COMMAND_EX вместо DEFINE_COMMAND.
DEFINE_COMMAND_EX Указывает команду, которая будет использоваться для создания набора строк при использовании класса CCommand . Поддерживает приложения ANSI и Юникод.

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

Имя Описание
BEGIN_PARAM_MAP Помечает начало записей карты параметров в классе записей пользователя.
END_PARAM_MAP Помечает конец записей карты параметров.
SET_PARAM_TYPE Указывает COLUMN_ENTRY макросы, которые соответствуют макросу SET_PARAM_TYPE в качестве входных, выходных данных или выходных данных.

AtlTraceErrorRecords

Дамп сведений об ошибке OLE DB на устройство дампа, если возвращается ошибка.

Синтаксис

inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);

Параметры

Герр
[in] Функция HRESULT, возвращаемая функцией-членом шаблона потребителя OLE DB.

Замечания

Если hErr не S_OK, AtlTraceErrorRecords дампает сведения об ошибке OLE DB на устройство дампа ( вкладка отладки окна вывода или файла). Сведения об записи ошибок, полученные от поставщика, включают номер строки, источник, описание, файл справки, контекст и GUID для каждой записи записи об ошибках. AtlTraceErrorRecords сбрасывает эти сведения только в отладочных сборках. В сборках выпуска это пустая заглушка, оптимизированная для работы. Дополнительные сведения см. в разделе "Класс CDBErrorInfo".

BEGIN_ACCESSOR

Помечает начало записи метода доступа.

Синтаксис

BEGIN_ACCESSOR(num, bAuto)

Параметры

num
[in] Число смещений от нуля для метода доступа в этой карте доступа.

bAuto
[in] Указывает, является ли этот метод доступа автоматическим доступом или ручным методом доступа. Если метод доступа является автоматическим; если truefalseметод доступа вручную. Автоматический метод доступа означает, что данные извлекается для операций перемещения.

Замечания

В случае нескольких методов доступа в наборе строк необходимо указать BEGIN_ACCESSOR_MAP и использовать макрос BEGIN_ACCESSOR для каждого отдельного метода доступа. Макрос BEGIN_ACCESSOR завершен с помощью макроса END_ACCESSOR. Макрос BEGIN_ACCESSOR_MAP завершен с помощью макроса END_ACCESSOR_MAP.

Пример

См . BEGIN_ACCESSOR_MAP.

BEGIN_ACCESSOR_MAP

Отмечает начало карты записей метода доступа.

Синтаксис

BEGIN_ACCESSOR_MAP(x, num)

Параметры

x
[входные данные] Имя класса записей пользователя.

num
[входные данные] Число методов доступа в этой карте метода доступа.

Замечания

В случае нескольких методов доступа в наборе строк необходимо указать BEGIN_ACCESSOR_MAP в начале и использовать макрос BEGIN_ACCESSOR для каждого отдельного метода доступа. Макрос BEGIN_ACCESSOR завершен с помощью макроса END_ACCESSOR. Карта доступа завершена с помощью макроса END_ACCESSOR_MAP.

Если в записи пользователя имеется только один метод доступа, используйте макрос BEGIN_COLUMN_MAP.

Пример

class CArtistsAccessor
{
public:
// Data Elements
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];
   short m_nAge;

// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
   BEGIN_ACCESSOR(0, true)
      COLUMN_ENTRY(1, m_szFirstName)
      COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false) // Not an auto accessor
      COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsAccessor, L" \
   SELECT \
      FirstName, \
      LastName, \
      Age \
      FROM Artists")
};

END_ACCESSOR

Помечает конец записи метода доступа.

Синтаксис

END_ACCESSOR()

Замечания

Для нескольких методов доступа в наборе строк необходимо указать BEGIN_ACCESSOR_MAP и использовать макрос BEGIN_ACCESSOR для каждого отдельного метода доступа. Макрос BEGIN_ACCESSOR завершен с помощью макроса END_ACCESSOR. Макрос BEGIN_ACCESSOR_MAP завершен с помощью макроса END_ACCESSOR_MAP.

Пример

См . BEGIN_ACCESSOR_MAP.

END_ACCESSOR_MAP

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

Синтаксис

END_ACCESSOR_MAP()

Замечания

Для нескольких методов доступа в наборе строк необходимо указать BEGIN_ACCESSOR_MAP и использовать макрос BEGIN_ACCESSOR для каждого отдельного метода доступа. Макрос BEGIN_ACCESSOR завершен с помощью макроса END_ACCESSOR. Макрос BEGIN_ACCESSOR_MAP завершен с помощью макроса END_ACCESSOR_MAP.

Пример

См . BEGIN_ACCESSOR_MAP.

BEGIN_COLUMN_MAP

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

Синтаксис

BEGIN_COLUMN_MAP(x)

Параметры

x
[входные данные] Имя класса записей пользователя, производного от CAccessor.

Замечания

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

Макрос BEGIN_COLUMN_MAP завершен с помощью макроса END_COLUMN_MAP. Этот макрос используется, если имеется только один метод доступа, необходимый для записи пользователя.

Столбцы соответствуют полям в наборе строк, который нужно привязать.

Пример

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

BLOB_ENTRY

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB).

Синтаксис

BLOB_ENTRY(nOrdinal, IID, flags, data)

Параметры

nOrdinal
[in] Номер столбца.

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

Пример

Узнайте, как получить BLOB-объект?

BLOB_ENTRY_LENGTH

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_ENTRY, за исключением того, что этот макрос также получает длину в байтах столбца BLOB.

Синтаксис

BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)

Параметры

nOrdinal
[in] Номер столбца.

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

length
[out] Длина (фактическая) в байтах столбца BLOB.

Пример

Узнайте, как получить BLOB-объект?

BLOB_ENTRY_LENGTH_STATUS

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_ENTRY, за исключением того, что этот макрос также получает длину и состояние столбца BLOB.

Синтаксис

BLOB_ENTRY_LENGTH_STATUS(
    nOrdinal,
    IID,
    flags,
    data,
    length,
    status )

Параметры

nOrdinal
[in] Номер столбца.

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

length
[out] Длина (фактическая) в байтах столбца BLOB.

состояние
[out] Состояние столбца данных BLOB.

Пример

Узнайте, как получить BLOB-объект?

BLOB_ENTRY_STATUS

Используется с BEGIN_COLUMN_MAP или BEGIN_ACCESSOR_MAP для привязки двоичного большого объекта (BLOB). Аналогично BLOB_ENTRY, за исключением того, что этот макрос также получает состояние столбца BLOB.

Синтаксис

BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)

Параметры

nOrdinal
[in] Номер столбца.

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[out] Состояние поля BLOB.

Пример

Узнайте, как получить BLOB-объект?

BLOB_NAME

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_ENTRY, за исключением того, что этот макрос принимает имя столбца вместо номера столбца.

Синтаксис

BLOB_NAME(pszName, IID, flags, data )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

Пример

Узнайте, как получить BLOB-объект?

BLOB_NAME_LENGTH

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_NAME, за исключением того, что этот макрос также получает длину в байтах столбца данных BLOB.

Синтаксис

BLOB_NAME_LENGTH(pszName, IID, flags, data, length )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

length
[out] Длина (фактическая) в байтах столбца BLOB.

BLOB_NAME_LENGTH_STATUS

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_NAME, за исключением того, что этот макрос также получает длину и состояние столбца данных BLOB.

Синтаксис

BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

length
[out] Длина (фактическая) в байтах столбца BLOB.

состояние
[out] Состояние поля BLOB.

BLOB_NAME_STATUS

Используется с BEGIN_COLUMN_MAP и END_COLUMN_MAP привязки двоичного большого объекта (BLOB). Аналогично BLOB_NAME, за исключением того, что этот макрос также получает состояние столбца данных BLOB.

Синтаксис

BLOB_NAME_STATUS(pszName, IID, flags, data, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

IID
[in] GUID интерфейса, например IDD_ISequentialStream, используемый для извлечения BLOB-объекта.

flags
[in] флаги режима служба хранилища, определенные моделью структурированных служба хранилища OLE (например, STGM_READ).

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[out] Состояние поля BLOB.

BOOKMARK_ENTRY

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

Синтаксис

BOOKMARK_ENTRY(variable)

Параметры

variable
[in] Переменная, привязанная к столбцу закладки.

Пример

class CArtistsBookmark
{
public:
// Data Elements
   CBookmark<4> m_bookmark;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
   BOOKMARK_ENTRY(m_bookmark)
   COLUMN_ENTRY(1, m_nAge)
   COLUMN_ENTRY(2, m_szFirstName)
   COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()

   void GetRowsetProperties(CDBPropSet* pPropSet)
   {
      pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
   }

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsBookmark, L" \
   SELECT \
      Age, \
      FirstName, \
      LastName \
      FROM Artists")
};

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

COLUMN_ENTRY

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

Синтаксис

COLUMN_ENTRY(nOrdinal, data)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Макрос COLUMN_ENTRY используется в следующих местах:

Пример

Примеры в разделах макросов, BEGIN_COLUMN_MAP и BEGIN_ACCESSOR_MAP.

COLUMN_ENTRY_EX

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

Синтаксис

COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

wType
[in] Тип данных.

nLength
[in] Размер данных в байтах.

nPrecision
[in] Максимальная точность использования при получении данных и wTypeDBTYPE_NUMERIC. В противном случае этот параметр игнорируется.

nScale
[in] Масштаб, используемый при получении данных и wType, или DBTYPE_DECIMALDBTYPE_NUMERIC .

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Макрос COLUMN_ENTRY_EX используется в следующих местах:

Пример

См . BOOKMARK_ENTRY.

COLUMN_ENTRY_LENGTH

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

Синтаксис

COLUMN_ENTRY_LENGTH(nOrdinal, data, length)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца, начиная с одного. Закладка соответствует нулю столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

Замечания

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

COLUMN_ENTRY_LENGTH_STATUS

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

Синтаксис

COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Используйте этот макрос, если требуется поддерживать переменные длины и состояния. Он используется в следующих местах:

COLUMN_ENTRY_PS

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

Синтаксис

COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

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

COLUMN_ENTRY_PS_LENGTH

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

Синтаксис

COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца, начиная с одного. Закладка соответствует нулю столбца.

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

Замечания

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

COLUMN_ENTRY_PS_LENGTH_STATUS

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

Синтаксис

COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

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

COLUMN_ENTRY_PS_STATUS

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

Синтаксис

COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

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

COLUMN_ENTRY_STATUS

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

Синтаксис

COLUMN_ENTRY_STATUS(nOrdinal, data, status)

Параметры

См. раздел DBBINDING в справочнике программиста OLE DB.

nOrdinal
[in] Номер столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Этот макрос поддерживает переменную состояния . Он используется в следующих местах:

COLUMN_ENTRY_TYPE

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

Синтаксис

COLUMN_ENTRY_TYPE (nOrdinal, wType, data)

Параметры

nOrdinal
[in] Номер столбца.

wType
[in] Тип данных записи столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Этот макрос является специализированным вариантом макроса COLUMN_ENTRY , который предоставляет средства указания типа данных.

COLUMN_ENTRY_TYPE_SIZE

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

Синтаксис

COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)

Параметры

nOrdinal
[in] Номер столбца.

wType
[in] Тип данных записи столбца.

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

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Этот макрос является специализированным вариантом макроса COLUMN_ENTRY , который предоставляет средства указания размера и типа данных.

COLUMN_NAME

Представляет привязку набора строк к конкретному столбцу в наборе строк. Аналогично COLUMN_ENTRY, за исключением того, что этот макрос принимает имя столбца вместо номера столбца.

Синтаксис

COLUMN_NAME(pszName, data)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Макросы COLUMN_NAME_* используются в том же месте, что и COLUMN_ENTRY:

COLUMN_NAME_EX

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

Синтаксис

COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

wType
[in] Тип данных.

nLength
[in] Размер данных в байтах.

nPrecision
[in] Максимальная точность использования при получении данных и wTypeDBTYPE_NUMERIC. В противном случае этот параметр игнорируется.

nScale
[in] Масштаб, используемый при получении данных и wType, или DBTYPE_DECIMALDBTYPE_NUMERIC .

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_LENGTH

Представляет привязку набора строк к конкретному столбцу в наборе строк. Аналогично COLUMN_NAME, за исключением того, что этот макрос также принимает длину столбца.

Синтаксис

COLUMN_NAME_LENGTH(pszName, data, length)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_LENGTH_STATUS

Представляет привязку набора строк к конкретному столбцу в наборе строк. Аналогично COLUMN_NAME, за исключением того, что этот макрос также принимает состояние длины столбца и столбца.

Синтаксис

COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_PS

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

Синтаксис

COLUMN_NAME_PS(pszName, nPrecision, nScale, data )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_PS_LENGTH

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

Синтаксис

COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_PS_LENGTH_STATUS

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

Синтаксис

COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

length
[in] Переменная, привязанная к длине столбца.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_PS_STATUS

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

Синтаксис

COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

nPrecision
[in] Максимальная точность столбца, который требуется привязать.

nScale
[in] Масштаб столбца, который требуется привязать.

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_STATUS

Представляет привязку набора строк к конкретному столбцу в наборе строк. Аналогично COLUMN_NAME, за исключением того, что этот макрос также принимает состояние столбца.

Синтаксис

COLUMN_NAME_STATUS(pszName, data, status )

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

data
[in] Соответствующий элемент данных в записи пользователя.

состояние
[in] Переменная, привязанная к состоянию столбца.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_TYPE

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

Синтаксис

COLUMN_NAME_TYPE(pszName, wType, data)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

wType
[in] Тип данных.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_TYPE_PS

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

Синтаксис

COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

wType
[in] Тип данных.

nPrecision
[in] Максимальная точность использования при получении данных и wTypeDBTYPE_NUMERIC. В противном случае этот параметр игнорируется.

nScale
[in] Масштаб, используемый при получении данных и wType, или DBTYPE_DECIMALDBTYPE_NUMERIC .

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_TYPE_SIZE

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

Синтаксис

COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

wType
[in] Тип данных.

nLength
[in] Размер данных в байтах.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

COLUMN_NAME_TYPE_STATUS

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

Синтаксис

COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)

Параметры

pszName
[in] Указатель на имя столбца. Имя должно быть строкой Юникода. Это можно сделать, поместив "L" перед именем, например: L"MyColumn"

wType
[in] Тип данных.

состояние
[in] Переменная, привязанная к состоянию столбца.

data
[in] Соответствующий элемент данных в записи пользователя.

Замечания

Сведения о том, где используются макросы COLUMN_NAME_*, см . в COLUMN_NAME .

END_COLUMN_MAP

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

Синтаксис

END_COLUMN_MAP()

Замечания

Он используется с одним методом доступа в наборе строк. Макрос BEGIN_COLUMN_MAP завершен с помощью макроса END_COLUMN_MAP.

Пример

См . BEGIN_COLUMN_MAP.

DEFINE_COMMAND

Указывает команду, которая будет использоваться для создания набора строк при использовании класса CCommand . Принимает только типы строк, соответствующие указанному типу приложения (ANSI или Юникоду).

Примечание.

Рекомендуется использовать DEFINE_COMMAND_EX вместо DEFINE_COMMAND.

Синтаксис

DEFINE_COMMAND(x, szCommand)

Параметры

x
[in] Имя класса записи пользователя (команды).

szCommand
[in] Командная строка, которая будет использоваться для создания набора строк при использовании CCommand.

Замечания

Указанная командная строка будет использоваться в качестве значения по умолчанию, если не указывать текст команды в методе CCommand::Open .

Этот макрос принимает строки ANSI, если вы создаете приложение как ANSI или строки Юникода, если вы создаете приложение как Юникод. Рекомендуется использовать DEFINE_COMMAND_EX вместо DEFINE_COMMAND, так как прежнее принимает строки Юникода независимо от типа приложения ANSI или Юникода.

Пример

См . BOOKMARK_ENTRY.

DEFINE_COMMAND_EX

Указывает команду, которая будет использоваться для создания набора строк при использовании класса CCommand . Поддерживает приложения Юникода и ANSI.

Синтаксис

DEFINE_COMMAND_EX(x, wszCommand)

Параметры

x
[in] Имя класса записи пользователя (команды).

wszCommand
[in] Командная строка, которая будет использоваться для создания набора строк при использовании CCommand.

Замечания

Указанная командная строка будет использоваться в качестве значения по умолчанию, если не указывать текст команды в методе CCommand::Open .

Этот макрос принимает строки Юникода независимо от типа приложения. Этот макрос предпочтителен по сравнению с DEFINE_COMMAND , так как он поддерживает Юникод, а также приложения ANSI.

Пример

См . BOOKMARK_ENTRY.

BEGIN_PARAM_MAP

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

Синтаксис

BEGIN_PARAM_MAP(x)

Параметры

x
[входные данные] Имя класса записей пользователя.

Замечания

Параметры используются командами.

Пример

Пример макроса BEGIN_COLUMN_MAP .

END_PARAM_MAP

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

Синтаксис

END_PARAM_MAP()

Пример

Пример макроса BEGIN_PARAM_MAP .

SET_PARAM_TYPE

Указывает макросы COLUMN_ENTRY, которые соответствуют SET_PARAM_TYPE входным, выходным или выходным данным макроса.

Синтаксис

SET_PARAM_TYPE(type)

Параметры

type
[входные данные] Тип, задаваемый для параметра.

Замечания

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

  • DBPARAMIO_NOTPARAM Метод доступа не имеет параметров. Как правило, для этого значения в методах доступа к строкам необходимо eParamIO напомнить пользователю, что параметры игнорируются.

  • DBPARAMIO_INPUT Входной параметр.

  • DBPARAMIO_OUTPUT Выходной параметр.

  • DBPARAMIO_INPUT | DBPARAMIO_OUTPUT Параметр является как входным, так и выходным параметром.

Пример

class CArtistsProperty
{
public:
   short m_nReturn;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

BEGIN_PARAM_MAP(CArtistsProperty)
   SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
   COLUMN_ENTRY(1, m_nReturn)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()

BEGIN_COLUMN_MAP(CArtistsProperty)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsProperty, L" \
      { ? = SELECT Age FROM Artists WHERE Age < ? }")
};

Требования

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

См. также

Макросы и глобальные функции для шаблонов объектов-получателей OLE DB
Шаблоны объекта-получателя OLE DB
Ссылка на шаблоны объекта-получателя OLE DB