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


Выбор подходящего метода доступа

Определить типы данных набора строк можно либо при компиляции, либо при выполнении.

Если требуется определить типы данных набора строк при компиляции, используйте класс статического доступа (например, CAccessor). Задать типы данных можно вручную или с помощью мастера потребителей OLE DB библиотеки ATL.

Если требуется определить типы данных набора строк при выполнении, используйте класс динамического доступа (CDynamicAccessor или производные от него классы), либо класс ручного доступа (CManualAccessor). В этих случаях для набора строк можно вызвать функцию GetColumnInfo, которая вернет информацию о привязке столбцов, в том числе и типы данных.

В следующей таблице приведен список типов доступа, предоставляемых в шаблонах потребителей. Каждый класс доступа имеет определенные достоинства и недостатки. В каждой конкретной ситуации будет оптимальным тот или иной тип доступа.

Класс доступа

Привязка

Параметр

Комментарий

CAccessor

Создайте запись пользователя с помощью макроса COLUMN_ENTRY. Этот макрос привязывает поле данных записи к объекту доступа. После создания набора строк привязка столбцов не может быть отменена.

Да, с помощью записи макроса BEGIN_PARAM_MAP. После создания привязка параметров не может быть отменена.

Самый быстрый класс доступа из-за небольшого объема кода.

CDynamicAccessor

Автоматическая.

Нет.

Полезен, если неизвестен тип данных набора строк.

CDynamicParameterAccessor

Автоматическая, но может быть переопределена.

Да, если поставщик поддерживает интерфейс ICommandWithParameters. Параметры привязываются автоматически.

Медленнее, чем класс CDynamicAccessor, но полезен для вызова универсальных хранимых процедур.

CDynamicStringAccessor[A,W]

Автоматическая.

Нет.

Извлекает данные из хранилища данных в виде строковых данных.

CManualAccessor

Вручную, используя функцию AddBindEntry.

Вручную, используя функцию AddParameterEntry.

Очень быстрый; привязка параметров и столбцов выполняется лишь один раз. Тип используемых данных определяется пользователем. Пример DBVIEWER демонстрирует использование этого класса. Требует написания большего объема кода, чем классы CDynamicAccessor и CAccessor. Близок к непосредственному вызову функций OLE DB.

CXMLAccessor

Автоматическая.

Нет.

Извлекает данные из хранилища данных в виде строк и представляет их в XML-формате.

См. также

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

Использование методов доступа