Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Позволяет получить доступ к источнику данных, если у вас нет знаний о схеме базы данных (базовая структура базы данных).
Синтаксис
class CDynamicAccessor : public CAccessorBase
Требования
Заголовок: atldbcli.h
Участники
Методы
| Имя | Описание |
|---|---|
| AddBindEntry | Добавляет запись привязки к выходным столбцам при переопределении метода доступа по умолчанию. |
| CDynamicAccessor | Создает экземпляр и инициализирует CDynamicAccessor объект. |
| Закрыть | Отменяет привязку всех столбцов, освобождает выделенную память и освобождает указатель интерфейса IAccessor в классе. |
| GetBlobHandling | Извлекает значение обработки BLOB для текущей строки. |
| GetBlobSizeLimit | Извлекает максимальный размер BLOB-объектов в байтах. |
| GetBookmark | Извлекает закладку для текущей строки. |
| GetColumnCount | Извлекает количество столбцов в наборе строк. |
| GetColumnFlags | Извлекает характеристики столбца. |
| GetColumnInfo | Извлекает метаданные столбца. |
| GetColumnName | Извлекает имя указанного столбца. |
| GetColumnType | Извлекает тип данных указанного столбца. |
| GetLength | Извлекает максимальную длину столбца в байтах. |
| GetOrdinal | Извлекает индекс столбца с именем столбца. |
| GetStatus | Извлекает состояние указанного столбца. |
| GetValue | Извлекает данные из буфера. |
| SetBlobHandling | Задает значение обработки BLOB для текущей строки. |
| SetBlobSizeLimit | Задает максимальный размер BLOB-объектов в байтах. |
| SetLength | Задает длину столбца в байтах. |
| SetStatus | Задает состояние указанного столбца. |
| SetValue | Хранит данные в буфере. |
Замечания
Используйте CDynamicAccessor методы для получения сведений о столбцах, таких как имена столбцов, количество столбцов, тип данных и т. д. Затем эти сведения столбца используются для динамического создания метода доступа во время выполнения.
Сведения о столбце хранятся в буфере, который создается и управляется этим классом. Получение данных из буфера с помощью GetValue.
Обсуждение и примеры использования классов динамического доступа см. в разделе "Использование динамических accessors".
CDynamicAccessor::AddBindEntry
Добавляет запись привязки к выходным столбцам.
Синтаксис
HRESULT AddBindEntry(const DBCOLUMNINFO& info) throw();
Параметры
info
[in] Структура DBCOLUMNINFO , содержащая сведения о столбцах. См. раздел "Структуры DBCOLUMNINFO" в IColumnsInfo::GetColumnInfo в справочнике программиста OLE DB.
Возвращаемое значение
Одно из стандартных значений HRESULT.
Замечания
Используйте этот метод при переопределении средства доступа по умолчанию, созданного с CDynamicAccessor помощью (см. инструкции по выбору данных?).
CDynamicAccessor::CDynamicAccessor
Создает экземпляр и инициализирует CDynamicAccessor объект.
Синтаксис
CDynamicAccessor(DBBLOBHANDLINGENUM eBlobHandling = DBBLOBHANDLING_DEFAULT,
DBLENGTH nBlobSize = 8000);
Параметры
eBlobHandling
Указывает, как обрабатываются данные больших двоичных объектов (BLOB). Значение по умолчанию — DBBLOBHANDLING_DEFAULT. Описание значений DBBLOBHANDLINGENUM см . в разделе SetBlobHandlingLINGUM .
nBlobSize
Максимальный размер BLOB-объектов в байтах; Данные столбцов по этому значению рассматриваются как BLOB-объект. Значение по умолчанию — 8000. Дополнительные сведения см. в разделе SetBlobSizeLimit .
Замечания
При использовании конструктора для инициализации CDynamicAccessor объекта можно указать, как он привязывает БОЛЬШИЕ двоичные объекты. BLOB-объекты могут содержать двоичные данные, такие как графика, звук или скомпилированный код. Поведение по умолчанию заключается в том, чтобы обрабатывать столбцы более 8000 байт как BLOB-объекты и пытаться привязать их к объекту ISequentialStream . Однако можно указать другое значение, которое должно быть размером BLOB.
Кроме того, можно указать способ CDynamicAccessor обработки данных столбцов, которые квалифифиируются как данные BLOB: он может обрабатывать данные BLOB по умолчанию; он может пропускать (не привязывать) данные BLOB; или привязывать данные BLOB в выделенной поставщиком памяти.
CDynamicAccessor::Close
Отменяет привязку всех столбцов, освобождает выделенную память и освобождает указатель интерфейса IAccessor в классе.
Синтаксис
void Close() throw();
CDynamicAccessor::GetBlobHandling
Извлекает значение обработки BLOB для текущей строки.
Синтаксис
const DBBLOBHANDLINGENUM GetBlobHandling() const;
Замечания
Возвращает значение обработки BLOB eBlobHandling, заданное параметром SetBlobHandling.
CDynamicAccessor::GetBlobSizeLimit
Извлекает максимальный размер BLOB-объектов в байтах.
Синтаксис
const DBLENGTH GetBlobSizeLimit() const;
Замечания
Возвращает значение обработки BLOB-объектов nBlobSize , заданное параметром SetBlobSizeLimit.
CDynamicAccessor::GetBookmark
Извлекает закладку для текущей строки.
Синтаксис
HRESULT GetBookmark(CBookmark< >* pBookmark) const throw();
Параметры
pBookmark
[out] Указатель на объект CBookmark .
Возвращаемое значение
Одно из стандартных значений HRESULT.
Замечания
Чтобы получить закладку, необходимо задать DBPROP_IRowsetLocate значение VARIANT_TRUE.
CDynamicAccessor::GetColumnCount
Извлекает количество столбцов.
Синтаксис
DBORDINAL GetColumnCount() const throw();
Возвращаемое значение
Количество полученных столбцов.
CDynamicAccessor::GetColumnFlags
Извлекает характеристики столбца.
Синтаксис
bool GetColumnFlags(DBORDINAL nColumn,
DBCOLUMNFLAGS* pFlags) const throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
pFlags
[out] Указатель на битовую маску, описывающую характеристики столбца. См. раздел "Перечисленный тип DBCOLUMNFLAGS" в IColumnsInfo::GetColumnInfo в справочнике программиста OLE DB.
Возвращаемое значение
Возвращает, true если характеристики столбца успешно извлекаются. В противном случае возвращается значение false.
Замечания
Номер столбца смещение от одного. Ноль столбца — это особый случай; это закладка, если она доступна.
CDynamicAccessor::GetColumnInfo
Возвращает метаданные столбца, необходимые большинству потребителей.
Синтаксис
HRESULT GetColumnInfo(IRowset* pRowset,
DBORDINAL* pColumns,
DBCOLUMNINFO** ppColumnInfo,
OLECHAR** ppStringsBuffer) throw();
Параметры
pRowset
[in] Указатель на интерфейс IRowset .
pColumns
[out] Указатель на память, в которой возвращается количество столбцов в наборе строк; это число включает столбец закладки, если есть один.
ppColumnInfo
[out] Указатель на память, в которой возвращается массив DBCOLUMNINFO структур. См. раздел "Структуры DBCOLUMNINFO" в IColumnsInfo::GetColumnInfo в справочнике программиста OLE DB.
ppStringsBuffer
[out] Указатель на память, в которой возвращается указатель на хранилище для всех строковых значений (имен, используемых в columnid или pwszName) в одном блоке выделения.
Возвращаемое значение
Одно из стандартных значений HRESULT.
Замечания
Дополнительные сведения о типах DBORDINALDBCOLUMNINFOOLECHARданных см. в статье IColumnsInfo::GetColumnInfo в справочнике программиста OLE DB.
CDynamicAccessor::GetColumnName
Извлекает имя указанного столбца.
Синтаксис
LPOLESTR GetColumnName(DBORDINAL nColumn) const throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
Возвращаемое значение
Имя заданного столбца.
CDynamicAccessor::GetColumnType
Извлекает тип данных указанного столбца.
Синтаксис
bool GetColumnType(DBORDINAL nColumn,
DBTYPE* pType) const throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
pType
[out] Указатель на тип данных указанного столбца.
Возвращаемое значение
Возвращает успешное выполнение или false сбойtrue.
CDynamicAccessor::GetLength
Извлекает длину указанного столбца.
Синтаксис
bool GetLength(DBORDINAL nColumn,
DBLENGTH* pLength) const throw();
bool GetLength(const CHAR* pColumnName,
DBLENGTH* pLength) const throw();
bool GetLength(const WCHAR* pColumnName,
DBLENGTH* pLength) const throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
pLength
[out] Указатель на целое число, содержащее длину столбца в байтах.
Возвращаемое значение
Возвращает значение true , если указанный столбец найден. В противном случае эта функция возвращается false.
Замечания
Первая переопределение принимает номер столбца, а второй и третий переопределяют имя столбца в формате ANSI или Юникод соответственно.
CDynamicAccessor::GetOrdinal
Извлекает номер столбца с именем столбца.
Синтаксис
bool GetOrdinal(const CHAR* pColumnName,
DBORDINAL* pOrdinal) const throw();
bool GetOrdinal(const WCHAR* pColumnName,
DBORDINAL* pOrdinal) const throw();
Параметры
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
pOrdinal
[out] Указатель на номер столбца.
Возвращаемое значение
Возвращает значение true , если столбец с указанным именем найден. В противном случае эта функция возвращается false.
CDynamicAccessor::GetStatus
Извлекает состояние указанного столбца.
Синтаксис
bool GetStatus(DBORDINAL nColumn,
DBSTATUS* pStatus) const throw();
bool GetStatus(const CHAR* pColumnName,
DBSTATUS* pStatus) const throw();
bool GetStatus(const WCHAR* pColumnName,
DBSTATUS* pStatus) const throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
pStatus
[out] Указатель на переменную, содержащую состояние столбца. Дополнительные сведения см. в справочнике программиста OLE DB.
Возвращаемое значение
Возвращает значение true , если указанный столбец найден. В противном случае эта функция возвращается false.
CDynamicAccessor::GetValue
Извлекает данные для указанного столбца.
Синтаксис
void* GetValue(DBORDINAL nColumn) const throw();
void* GetValue(const CHAR* pColumnName) const throw();
void* GetValue(const WCHAR* pColumnName) const throw();
template < class ctype >
bool GetValue(DBORDINAL nColumn, ctype* pData) const throw();
template < class ctype >
bool GetValue(const CHAR* pColumnName, ctype* pData) const throw();
template < class ctype >
bool GetValue(const WCHAR* pColumnName, ctype* pData) const throw();
Параметры
ctype
[in] Шаблонный параметр, обрабатывающий любой тип данных, кроме строковых типов (CHAR*, WCHAR*которые требуют специальной обработки). GetValue использует соответствующий тип данных в зависимости от указанного здесь значения.
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
pColumnName
[in] Имя столбца.
pData
[out] Указатель на содержимое указанного столбца.
Возвращаемое значение
Если вы хотите передать строковые данные, используйте неуверенные версии GetValue. Неуспеченные версии этого метода возвращаются void*, что указывает на часть буфера, содержащую указанные данные столбца. Возвращает значение NULL, если столбец не найден.
Для всех других типов данных проще использовать шаблонные версии GetValue. Шаблонные версии возвращаются true при успешном выполнении или false сбое.
Замечания
Используйте неуверенные версии для возврата столбцов, содержащих строки и шаблонные версии для столбцов, содержащих другие типы данных.
В режиме отладки вы получите утверждение, если размер pData не равен размеру столбца, к которому он указывает.
CDynamicAccessor::SetBlobHandling
Задает значение обработки BLOB для текущей строки.
Синтаксис
bool SetBlobHandling(DBBLOBHANDLINGENUM eBlobHandling);
Параметры
eBlobHandling
Указывает способ обработки данных BLOB. Этот параметр может принимать перечисленные ниже значения.
DBBLOBHANDLING_DEFAULT. Обработка данных столбцов, размер которого превышает nBlobSize (как задано
SetBlobSizeLimitпо) в виде данных BLOB и извлекает их черезISequentialStreamобъект илиIStreamобъект. Этот параметр попытается привязать каждый столбец, содержащий данные, превышающие nBlobSize или указанный как DBTYPE_IUNKNOWN как данные BLOB.DBBLOBHANDLING_NOSTREAMS. Обработка данных столбцов больше nBlobSize (как задано
SetBlobSizeLimitпо) в виде данных BLOB и извлекает их с помощью ссылки в выделенной поставщиком памяти, принадлежащей потребителю. Этот параметр полезен для таблиц с несколькими столбцами BLOB, и поставщик поддерживает только одинISequentialStreamобъект для каждого метода доступа.DBBLOBHANDLING_SKIP. Пропустить (не привязывать) столбцы, квалифицируясь как содержащие BLOB-объекты (метод доступа не привязывает или не извлекает значение столбца, но он по-прежнему получает состояние столбца и длину).
Замечания
Перед вызовом SetBlobHandling следует вызвать метод Open.
Метод конструктора CDynamicAccessor задает значение обработки BLOB-объектов для DBBLOBHANDLING_DEFAULT.
CDynamicAccessor::SetBlobSizeLimit
Задает максимальный размер BLOB-объектов в байтах.
Синтаксис
void SetBlobSizeLimit(DBLENGTH nBlobSize);
Параметры
nBlobSize
Указывает ограничение размера BLOB.
Замечания
Задает максимальный размер BLOB-объектов в байтах; Данные столбца, превышающие это значение, рассматриваются как БОЛЬШОЙ ДВОИЧНЫй объект. Некоторые поставщики предоставляют очень большие размеры для столбцов (например, 2 ГБ). Вместо того, чтобы попытаться выделить память для столбца этого размера, обычно вы попытаетесь привязать эти столбцы как BLOB-объекты. Таким образом, вам не нужно выделять всю память, но вы по-прежнему можете считывать все данные без страха усечения. Однако в некоторых случаях может потребоваться принудительно CDynamicAccessor привязать большие столбцы в собственных типах данных. Для этого вызовите SetBlobSizeLimit перед вызовом Open.
Метод конструктора CDynamicAccessor задает максимальный размер BLOB-объектов по умолчанию размером 8 000 байт.
CDynamicAccessor::SetLength
Задает длину указанного столбца.
Синтаксис
bool SetLength(DBORDINAL nColumn,
DBLENGTH nLength)throw();
bool SetLength(const CHAR* pColumnName,
DBLENGTH nLength) throw();
bool SetLength(const WCHAR* pColumnName,
DBLENGTH nLength) throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
nLength
[in] Длина столбца в байтах.
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
Возвращаемое значение
Возвращает, true если указанная длина столбца успешно задана. В противном случае эта функция возвращается false.
CDynamicAccessor::SetStatus
Задает состояние указанного столбца.
Синтаксис
bool SetStatus(DBORDINAL nColumn,
DBSTATUS status)throw();
bool SetStatus(const CHAR* pColumnName,
DBSTATUS status) throw();
bool SetStatus(const WCHAR* pColumnName,
DBSTATUS status) throw();
Параметры
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
состояние
[in] Состояние столбца. Дополнительные сведения см. в справочнике программиста OLE DB.
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
Возвращаемое значение
Возвращает значение true , если указанное состояние столбца установлено успешно. В противном случае эта функция возвращается false.
CDynamicAccessor::SetValue
Сохраняет данные в указанном столбце.
Синтаксис
template <class ctype>
bool SetValue(
DBORDINAL nColumn,
constctype& data) throw( );
template <class ctype>
bool SetValue(
const CHAR * pColumnName,
const ctype& data) throw( );
template <class ctype>
bool SetValue(
const WCHAR *pColumnName,
const ctype& data) throw( );
Параметры
ctype
[in] Шаблонный параметр, обрабатывающий любой тип данных, кроме строковых типов (CHAR*, WCHAR*которые требуют специальной обработки). GetValue использует соответствующий тип данных в зависимости от указанного здесь значения.
pColumnName
[in] Указатель на символьную строку, содержащую имя столбца.
data
[in] Указатель на память, содержащую данные.
nColumn
[in] Номер столбца. Числа столбцов начинаются с 1. Значение 0 ссылается на столбец закладки, если таковой имеется.
Возвращаемое значение
Если вы хотите задать строковые данные, используйте неуверенные версии GetValue. Неуспеченные версии этого метода возвращаются void*, что указывает на часть буфера, содержащую указанные данные столбца. Возвращает значение NULL, если столбец не найден.
Для всех других типов данных проще использовать шаблонные версии GetValue. Шаблонные версии возвращаются true при успешном выполнении или false сбое.
См. также
Шаблоны объекта-получателя OLE DB
Ссылка на шаблоны объекта-получателя OLE DB
Класс CAccessor
Класс CDynamicParameterAccessor
Класс CManualAccessor