OLE DB пользователь записывает

Чтобы использовать статический метод доступа, Ваш потребитель должен иметь запись пользователя. Запись пользователя — это класс C++, который содержит элементы данных для обработки ввода или вывода. Мастер объектов ATL создает запись пользователя для вашего потребителя. Можно добавить к записи пользователя для решения второстепенных задач, например, обработки команд методы.

В следующем коде показан образец записи, которая обрабатывает команды. В пользовательской записи BEGIN_OLUMN_MAP представляет собой набор строк данных, передаваемых потребителю от поставщика. BEGIN_PARAM_MAP представляет собой набор параметров команды. В этом примере используется класс CCommand для обработки параметров команды. Члены данных в записи сопоставления представляют собой смещения в один непрерывный блок памяти для каждого экземпляра класса. Выполнение макроса COLUMN_ENTRY соответствуют макроса PROVIDER_COLUMN_ENTRY на стороне провайдера.

Более подробную информацию о COLUMN_MAP и PARAM_MAP макросы содержатся в разделе макросы для шаблонов потребителей OLE DB.

класс CArtists
{
общественности:
/ / Элементы данных
   Чар m_szFirstName [20];
   Чар m_szLastName [30];
   короткие m_nAge;
 
/ / вывод привязки карты
BEGIN_COLUMN_MAP(CArtists)
   COLUMN_ENTRY (1, m_szFirstName)
   COLUMN_ENTRY (2, m_szLastName)
   COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
 
/ / параметр Привязка карты
BEGIN_PARAM_MAP(CArtists)
   COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}

В следующем примере показано запись пользователя, изменены для поддержки нескольких методов доступа в наборе строк. Вместо BEGIN_COLUMN_MAP и END_COLUMN_MAP, он использует BEGIN_ACCESSOR_MAP и BEGIN_ACCESSOR для каждого метода доступа. Макрос BEGIN_ACCESSOR указывает номер доступа (смещение от нуля) и является ли метод доступа autoaccessor. Autoaccessors вызов метода GetData для извлечения данных автоматически при вызове метода MoveNext. Неавтоматическое доступа требуют явного извлечения данных. Использовать-автоматический метод доступа при привязке к полю данных большого размера (как растровое изображение), вы не можете получить для каждой записи.

класс CMultiArtists
{
общественности:
/ / Элементы данных
   Чар m_szFirstName [20];
   Чар m_szLastName [30];
   короткие m_nAge;
 
/ / вывод привязки карты
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
   BEGIN_ACCESSOR (0, правда)
    COLUMN_ENTRY (1, m_szFirstName)
    COLUMN_ENTRY (2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR (1, false) / / не автоматический метод доступа
    COLUMN_ENTRY (3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()
}

Назад к OLE DB шаблона архитектура потребителей

Index