Хранение строк в поставщике OLE DB

В MyProviderRS.h, мастер объектов ATL создает по умолчанию записи пользователя под названием CWindowsFile . Для обработки двух строк, либо изменить CWindowsFile или добавьте собственную запись пользователя, как показано здесь:

////////////////////////////////////////////////////////////////////////
класс CAgentMan: государственные WI&N32_FIND_DATA
   DWORD dwBookmark; nbsp;             / / Добавить это
   TCHAR szCommand [256];          / / Добавить это
   TCHAR szText [256];             / / Добавить это
   TCHAR szCommand2 [256];         / / Добавить это
   TCHAR szText2 [256];            / / Добавить это
{
общественности:
BEGIN_PROVIDER_COLUMN_MAP(CAgentMan)
   PROVIDER_COLUMN_ENTRY ("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY ("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY ("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY ("имя_файла", 4, cFileName)
   PROVIDER_COLUMN_ENTRY ("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
   bool оператор == (const CAgentMan и am) / / это необязательный {}
      возвращение (lstrcmpi (cFileName, wf.cFileName) == 0);
   }
}

Члены данных szCommand и szText представляют собой две строки, с szCommand2 и szText2 обеспечение дополнительные столбцы в случае необходимости. Член данных dwBookmark для этого просто чтение поставщика не требуется, но будет использоваться в дальнейшем для добавления интерфейса IRowsetLocate. == Оператор сравнивает экземпляры. (Реализация этого оператора не является обязательным).

Для поддержки двух строк, PROVIDER_COLUMN_MAP требует модификации также. Замените PROVIDER_COLUMN_MAP показано выше с показано ниже:

BEGI&N_PROVIDER_COLUMN_MAP()
 nbsp;  PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command"), 1, 256, — GUID_NULL, CAgentMan, szCommand)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("текст"), 2, 256, — GUID_NULL CAgentMan, szText) PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command2"), 3, 256, — GUID_NULL, CAgentMan, szCommand2)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("текст2"), 4, 256, — GUID_NULL CAgentMan, szText2)
END_PROVIDER_COLUMN_MAP()

Когда это сделано, ваш провайдер должны быть готовы для компиляции и выполнения. Чтобы протестировать поставщика, необходимо потребителей с совпадающими функциональность. Реализация простого потребителя показывает, как создать такой тест поставщика. Запустите тестовый объект-получатель вместе с поставщиком. Убедитесь, что тестовый объект-получатель получает надлежащее строки от поставщика при нажатии кнопки выполнить в диалоговом окне потребительские тест.

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

Index