Класс CDynamicParameterAccessor

Аналогичен классу CDynamicAccessor , однако получает сведения о задаваемых параметрах путем вызова интерфейса ICommandWithParameters .

Синтаксис

class CDynamicParameterAccessor : public CDynamicAccessor

Требования

Заголовок: atldbcli.h

Участники

Методы

Имя Описание
CDynamicParameterAccessor Конструктор.
GetParam Получает данные параметров из буфера.
GetParamCount Получает число параметров в методе доступа.
GetParamIO Определяет, является ли указанный параметр входным или выходным.
GetParamLength Получает длину указанного параметра, сохраненного в буфере.
GetParamName Получает имя указанного параметра.
GetParamStatus Получает состояние указанного параметра, сохраненного в буфере.
GetParamString Получает строковые данные указанного параметра, сохраненного в буфере.
GetParamType Получает тип данных указанного параметра.
SetParam Задает буфер, используя данные параметра.
SetParamLength Задает длину указанного параметра, сохраненного в буфере.
SetParamStatus Задает состояние указанного параметра, сохраненного в буфере.
SetParamString Задает строковые данные указанного параметра, сохраненного в буфере.

Замечания

Для использования этого класса поставщик должен поддерживать интерфейс ICommandWithParameters для потребителя.

Сведения о параметрах хранятся в буфере, создаваемом и управляемом данным классом. Получить данные параметров из буфера можно с помощью методов GetParam и GetParamType.

Пример использования этого класса для выполнения хранимой процедуры SQL Server и получения значений выходных параметров см . в примере кода DynamicConsumer в репозитории Microsoft VCSamples на сайте GitHub.

CDynamicParameterAccessor::CDynamicParameterAccessor

Конструктор.

Синтаксис

typedef CDynamicParameterAccessor _ParamClass;
CDynamicParameterAccessor(
   DBBLOBHANDLINGENUM eBlobHandling = DBBLOBHANDLING_DEFAULT,
   DBLENGTH nBlobSize = 8000 )
   : CDynamicAccessor(eBlobHandling, nBlobSize )

Параметры

eBlobHandling
Указывает способ обработки данных BLOB. Значение по умолчанию — DBBLOBHANDLING_DEFAULT. Описание значений DBBLOBHANDLING см. в CDynamicAccessor ::SetBlobHandlinglingUM .

nBlobSize
Максимальный размер BLOB-объектов в байтах; Данные столбцов по этому значению рассматриваются как BLOB-объект. Значение по умолчанию — 8000. Дополнительные сведения см. в разделе CDynamicAccessor::SetBlobSizeLimit .

Замечания

Дополнительные сведения об обработке BLOB-объектов см. в конструкторе CDynamicAccessor::CDynamicAccessor .

CDynamicParameterAccessor::GetParam

Извлекает нестроковые данные для указанного параметра из буфера параметров.

Синтаксис

template <class ctype>bool GetParam(DBORDINAL nParam,
   ctype* pData) const throw();

template <class ctype> bool GetParam(TCHAR* pParamName,
   ctype* pData) const throw();

void* GetParam(DBORDINAL nParam) const throw();

void* GetParam(TCHAR* pParamName) const throw();

Параметры

ctype
Шаблонный параметр, который является типом данных.

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pParamName
[in] Имя параметра.

Pdata
[out] Указатель на память, содержащую данные, полученные из буфера.

Возвращаемое значение

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

Используется GetParam для извлечения нестрокных данных параметров из буфера. Используйте GetParamString для получения данных строковых параметров из буфера.

CDynamicParameterAccessor::GetParamCount

Извлекает количество параметров, хранящихся в буфере.

Синтаксис

DB_UPARAMS GetParamCount() const throw();

Возвращаемое значение

Число параметров.

CDynamicParameterAccessor::GetParamIO

Определяет, является ли указанный параметр входным или выходным.

Синтаксис

bool GetParamIO(DBORDINAL nParam,
   DBPARAMIO* pParamIO) const throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pParamIO
Указатель на переменную, DBPARAMIO содержащую тип (входной или выходной) указанного параметра. Он определяется следующим образом:

typedef DWORD DBPARAMIO;

enum DBPARAMIOENUM {
    DBPARAMIO_NOTPARAM   = 0,
    DBPARAMIO_INPUT      = 0x1,
    DBPARAMIO_OUTPUT     = 0x2
};

Возвращаемое значение

Возвращает успешное выполнение или false сбойtrue.

CDynamicParameterAccessor::GetParamLength

Получает длину указанного параметра, сохраненного в буфере.

Синтаксис

bool GetParamLength(DBORDINAL nParam,
   DBLENGTH* pLength);

DBLENGTH* GetParamLength(DBORDINAL nParam) const throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pLength
[out] Указатель на переменную, содержащую длину в байтах указанного параметра.

Замечания

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

CDynamicParameterAccessor::GetParamName

Извлекает имя указанного параметра.

Синтаксис

LPOLESTR GetParamName(DBORDINAL nParam) const throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

Возвращаемое значение

Имя указанного параметра.

CDynamicParameterAccessor::GetParamStatus

Получает состояние указанного параметра, сохраненного в буфере.

Синтаксис

bool GetParamStatus(DBORDINAL nParam,
   DBSTATUS* pStatus);

DBSTATUS* GetParamStatus(DBORDINAL nParam) const throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pStatus
[out] Указатель на переменную, содержащую состояние DBSTATUS указанного параметра. Сведения о значениях DBSTATUS см. в разделе "Состояние " в справочнике программиста OLE DB или поиск DBSTATUS в oledb.h.

Замечания

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

CDynamicParameterAccessor::GetParamString

Получает строковые данные указанного параметра, сохраненного в буфере.

Синтаксис

bool GetParamString(DBORDINAL nParam,
   CSimpleStringA& strOutput) throw();

bool GetParamString(DBORDINAL nParam,
   CSimpleStringW& strOutput) throw();

bool GetParamString(DBORDINAL nParam,
   CHAR* pBuffer,
   size_t* pMaxLen) throw();

bool GetParamString(DBORDINAL nParam,
   WCHAR* pBuffer,
   size_t* pMaxLen) throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

strOutput
[out] Строковые данные ANSI (CSimpleStringA) или Юникода (CSimpleStringW) указанного параметра. Необходимо передать параметр типа CString, например:

CString MyString;
rs.GetParamString(1, MyString);

pBuffer
[out] Указатель на строковые данные ANSI (CHAR) или Юникода (WCHAR) указанного параметра.

pMaxLen
[out] Указатель на размер буфера, на который указывает pBuffer (в символах, включая завершающий значение NULL).

Замечания

Возвращает успешное выполнение или false сбойtrue.

Если pBuffer имеет значение NULL, этот метод задает требуемый размер буфера в памяти, на который указывает pMaxLen , и возвращается true без копирования данных.

Этот метод завершится ошибкой, если буферный pBuffer недостаточно велик, чтобы содержать всю строку.

Используется GetParamString для получения данных строковых параметров из буфера. Используйте GetParam для получения нестрокных данных параметров из буфера.

CDynamicParameterAccessor::GetParamType

Получает тип данных указанного параметра.

Синтаксис

bool GetParamType(DBORDINAL nParam,
   DBTYPE* pType) const throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pType
[out] Указатель на переменную, содержащую тип данных указанного параметра.

Возвращаемое значение

Возвращает успешное выполнение или false сбойtrue.

CDynamicParameterAccessor::SetParam

Задает буфер параметров с помощью указанных (нестроковых) данных.

Синтаксис

template <class ctype>
bool SetParam(DBORDINAL nParam,
   constctype* pData,
   DBSTATUS status = DBSTATUS_S_OK) throw();

template <class ctype>
bool SetParam(TCHAR* pParamName,
   const ctype* pData,
   DBSTATUS status = DBSTATUS_S_OK) throw();

Параметры

ctype
Шаблонный параметр, который является типом данных.

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Например:

WCHAR* wszSQL = L"SELECT * FROM Authors WHERE State='?' AND LName='?'";

CCommand<CDynamicParameterAccessor> rs;
//...
rs.SetParam<LONG>(1, &m_BillingID);
rs.SetParam<CString>(2, &m_strFirstName);

pParamName
[in] Имя параметра.

Pdata
[in] Указатель на память, содержащую данные, записываемые в буфер.

состояние
[in] Состояние столбца DBSTATUS. Сведения о значениях DBSTATUS см. в разделе "Состояние " в справочнике программиста OLE DB или поиск DBSTATUS в oledb.h.

Возвращаемое значение

Возвращает успешное выполнение или false сбойtrue.

Используется SetParam для задания данных нестрокных параметров в буфере. Используйте SetParamString , чтобы задать данные строковых параметров в буфере.

CDynamicParameterAccessor::SetParamLength

Задает длину указанного параметра, сохраненного в буфере.

Синтаксис

bool SetParamLength(DBORDINAL nParam,
   DBLENGTH length);

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

length
[in] Длина в байтах указанного параметра.

Замечания

Возвращает успешное выполнение или false сбойtrue.

CDynamicParameterAccessor::SetParamStatus

Задает состояние указанного параметра, сохраненного в буфере.

Синтаксис

bool SetParamStatus(DBORDINAL nParam,
   DBSTATUS status);

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

состояние
[in] Состояние DBSTATUS указанного параметра. Сведения о значениях DBSTATUS см. в разделе "Состояние " в справочнике программиста OLE DB или поиск DBSTATUS в oledb.h.

Замечания

Возвращает успешное выполнение или false сбойtrue.

CDynamicParameterAccessor::SetParamString

Задает строковые данные указанного параметра, сохраненного в буфере.

Синтаксис

bool SetParamString(DBORDINAL nParam,
   constCHAR* pString,
   DBSTATUS status = DBSTATUS_S_OK) throw();bool SetParamString(DBORDINAL nParam,
   constWCHAR* pString,
   DBSTATUS status = DBSTATUS_S_OK) throw();

Параметры

nParam
[in] Номер параметра (смещение от 1). Параметр 0 зарезервирован для возвращаемых значений. Номер параметра — это индекс параметра на основе его порядка в вызове SQL или хранимой процедуры. Пример см . в разделе SetParam .

pString
[in] Указатель на строковые данные ANSI (CHAR) или Юникода (WCHAR) указанного параметра. См. инструкции DBSTATUS в oledb.h.

состояние
[in] Состояние DBSTATUS указанного параметра. Сведения о значениях DBSTATUS см. в разделе "Состояние " в справочнике программиста OLE DB или поиск DBSTATUS в oledb.h.

Замечания

Возвращает успешное выполнение или false сбойtrue.

SetParamString Произойдет сбой, если вы попытаетесь задать строку, превышающую максимальный размер, указанный для pString.

Используется SetParamString для задания данных строковых параметров в буфере. Используйте SetParam для задания нестрокных данных параметров в буфере.

См. также

Шаблоны объекта-получателя OLE DB
Ссылка на шаблоны объекта-получателя OLE DB
Класс CAccessor
Класс CDynamicAccessor
Класс CManualAccessor