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


Запись пользователя

Пользовательская запись предоставляет код и структуру данных, представляющую данные столбца для набора строк.Пользовательская запись может быть создана во время компиляции или выполнения.При создании поставщика с помощью мастера поставщика ATL OLE DB мастер создает пользовательскую запись, имеющую следующий вид (предполагается, что указано имя поставщика [краткое имя] "MyProvider"):

class CWindowsFile:
   public WIN32_FIND_DATA
{
public:

BEGIN_PROVIDER_COLUMN_MAP(CMyProviderWindowsFile)
   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()

};

Шаблоны поставщика OLE DB обрабатывают все характеристики OLE DB, касающиеся взаимодействия с клиентом.Для получения необходимых для отклика данных столбца поставщик вызывает функцию GetColumnInfo, которую необходимо поместить в пользовательскую запись.Можно явно переопределить оператор GetColumnInfo в пользовательской записи, например объявив его в H-файле, как показано ниже:

template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols) 

Это соответствует следующей записи:

static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

Необходимо также обеспечить реализацию GetColumnInfo в CPP-файле пользовательской записи.

Макрос PROVIDER_COLUMN_MAP создает функцию GetColumnInfo:

  • BEGIN_PROVIDER_COLUMN_MAP определяет прототип функции и статический массив структур ATLCOLUMNINFO.

  • PROVIDER_COLUMN_ENTRY определяет и инициализирует одну структуру ATLCOLUMNINFO.

  • END_PROVIDER_COLUMN_MAP закрывает массив и функцию.Он также помещает число элементов массива в параметр pcCols.

Если пользовательская запись создается во время выполнения, GetColumnInfo использует параметр pThis для получения указателя на набор строк или экземпляр команды.Команды и наборы строк должны поддерживать интерфейс IColumnsInfo, чтобы из указателя могли быть извлечены сведения о столбцах.

CommandClass и RowsetClass являются командой и набором строк, использующими пользовательскую запись.

Более подробные примеры переопределения GetColumnInfo в пользовательской записи представлены в разделе Динамическое определение столбцов для возврата потребителю.

См. также

Основные понятия

Архитектура шаблона поставщика OLE DB