Методы доступа и наборы строк
Для записи и извлечения данных шаблоны OLE DB используют метод доступа и набор строк с помощью класса CAccessorRowset. Этот класс может обрабатывать несколько методов доступа различного типа.
Типы методов доступа
Все методы доступа наследуются от CAccessorBase. CAccessorBase предоставляет привязку к параметру и к столбцу.
На следующем рисунке показаны типы методов доступа.
Классы методов доступа
CAccessor Используйте этот метод доступа, если структура источника базы данных во время разработки известна. CAccessor статически привязывает к источнику данных запись базы данных, содержащую буфер.
CDynamicAccessor Используйте этот метод доступа, если структура источника базы данных во время разработки неизвестна. CDynamicAccessor вызывает IColumnsInfo::GetColumnInfo для получения сведений о столбце базы данных. Создает и управляет методом доступа и буфером.
CDynamicParameterAccessor Используйте этот метод доступа для обработки неизвестных типов команд. При подготовке команд CDynamicParameterAccessor может получить сведения о параметрах с помощью интерфейса ICommandWithParameters, если поставщик поддерживает ICommandWithParameters.
CDynamicStringAccessor, CDynamicStringAccessorA и CDynamicStringAccessorW Используйте эти классы, если схема базы данных неизвестна. CDynamicStringAccessorA получает данные в виде строк ANSI; CDynamicStringAccessorW получает данные в виде строк Юникода.
CManualAccessor С помощью этого класса возможно использование любого типа данных, если поставщик сможет конвертировать этот тип. Он обрабатывает как столбцы результатов, так и параметры команд.
Следующая таблица кратко описывает поддержку типов методов доступа для шаблонов OLE DB.
Тип метода доступа |
Динамический |
Обрабатывает параметры |
Буфер |
Несколько методов доступа |
---|---|---|---|---|
CAccessor |
Нет |
Да |
Пользователь |
Да |
CDynamicAccessor |
Да |
Нет |
Шаблоны OLE DB |
Нет |
CDynamicParameterAccessor |
Да |
Да |
Шаблоны OLE DB |
Нет |
CDynamicStringAccessor[A,W] |
Да |
Нет |
Шаблоны OLE DB |
Нет |
CManualAccessor |
Да |
Да |
Пользователь |
Да |
Типы наборов строк
Шаблоны OLE DB поддерживают три вида набора строк (см. предыдущий рисунок): одиночный набор строк (реализован CRowset), групповой набор строк (реализован CBulkRowset) и массивный набор строк (реализован CArrayRowset). Одиночный набор строк загружает дескриптор одной строки при вызове MoveNext. Групповой набор строк может загрузить дескриптор нескольких строк. Массивный набор строк — тот, к которому можно получить доступ, пользуясь синтаксисом массива.
На следующем рисунке показаны типы наборов строк.
Классы набора строк
Набор строк схемы не предоставляет доступа к хранилищу данных, а предоставляет информацию о хранилище данных, — метаданные. Наборы строк схемы обычно используются в ситуациях, когда структура базы данных неизвестна на момент компиляции и должна быть получена во время выполнения.