共用方式為


CDynamicParameterAccessor 類別

類似於 CDynamicAccessor ,但藉由呼叫 ICommandWithParameters 介面取得要設定的參數資訊。

語法

class CDynamicParameterAccessor : public CDynamicAccessor

需求

標頭檔:atldbcli.h

成員

方法

名稱 描述
CDynamicParameterAccessor 建構函式。
GetParam 從緩衝區擷取參數資料。
GetParamCount 擷取存取子中的參數數目。
GetParamIO 判斷指定的參數為輸入或輸出參數。
GetParamLength 擷取儲存在緩衝區中的指定參數的長度。
GetParamName 擷取指定的參數名稱。
GetParamStatus 擷取儲存在緩衝區中的指定參數的狀態。
GetParamString 擷取儲存在緩衝區中的指定參數的字串資料。
GetParamType 擷取指定參數的資料類型。
SetParam 設定使用參數資料的緩衝區。
SetParamLength 設定儲存在緩衝區中的指定參數的長度。
SetParamStatus 設定儲存在緩衝區中的指定參數的狀態。
SetParamString 設定儲存在緩衝區中的指定參數的字串資料。

備註

提供者必須支援 ICommandWithParameters 讓取用者使用這個類別。

參數資訊會儲存在這個類別建立和管理的緩衝區中。 使用 GetParamGetParamType從緩衝區取得參數資料。

如需示範如何使用這個類別來執行 SQL Server 預存程式並取得輸出參數值的範例,請參閱 GitHub 上 Microsoft VCSamples 存放庫中的 DynamicConsumer 範例程式代碼。

CDynamicParameterAccessor::CDynamicParameterAccessor

建構函式。

語法

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

參數

eBlobHandling
指定 BLOB 資料的處理方式。 預設值為 DBBLOBHANDLING_DEFAULT。 如需 DBBLOBHANDLINGENUM 值的描述,請參閱 CDynamicAccessor::SetBlobHandling

nBlobSize
最大 BLOB 的大小 (以位元組為單位);此值的資料行資料被視為 BLOB。 默認值為 8,000。 如需詳細資訊,請參閱 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
};

傳回值

true在成功或false失敗時傳回 。

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 程式設計人員參考中的狀態,或在 oledb.h 中搜尋 DBSTATUS。

備註

第一個覆寫會在 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) 或 Unicode (CSimpleStringW) 字串資料。 您應該傳遞 類型的 CString參數,例如:

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

pBuffer
[out]指定參數之 ANSI (CHAR) 或 Unicode (WCHAR) 字串資料的指標。

pMaxLen
[out]pBuffer指向之緩衝區大小的指標(以字元為單位,包括終止 NULL)。

備註

true在成功或false失敗時傳回 。

如果 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]包含指定參數之數據類型之變數的指標。

傳回值

true在成功或false失敗時傳回 。

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]包含要寫入緩衝區之數據的記憶體指標。

status
[in]DBSTATUS 資料行狀態。 如需 DBSTATUS 值的資訊,請參閱 OLE DB 程式設計人員參考中的狀態,或在 oledb.h 中搜尋 DBSTATUS。

傳回值

true在成功或false失敗時傳回 。

使用 SetParam 在緩衝區中設定非字串參數數據。 使用 SetParamString 在緩衝區中設定字串參數數據。

CDynamicParameterAccessor::SetParamLength

設定儲存在緩衝區中的指定參數的長度。

語法

bool SetParamLength(DBORDINAL nParam,
   DBLENGTH length);

參數

nParam
[in] 參數編號 (從 1 開始位移)。 參數 0 保留作為傳回值。 參數編號是根據參數在 SQL 或預存程序呼叫中的順序編制的索引。 如需範例,請參閱 SetParam

length
[in]指定參數的位元組長度。

備註

true在成功或false失敗時傳回 。

CDynamicParameterAccessor::SetParamStatus

設定儲存在緩衝區中的指定參數的狀態。

語法

bool SetParamStatus(DBORDINAL nParam,
   DBSTATUS status);

參數

nParam
[in] 參數編號 (從 1 開始位移)。 參數 0 保留作為傳回值。 參數編號是根據參數在 SQL 或預存程序呼叫中的順序編制的索引。 如需範例,請參閱 SetParam

status
[in]指定之參數的 DBSTATUS 狀態。 如需 DBSTATUS 值的資訊,請參閱 OLE DB 程式設計人員參考中的狀態,或在 oledb.h 中搜尋 DBSTATUS。

備註

true在成功或false失敗時傳回 。

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) 或 Unicode (WCHAR) 字串資料的指標。 請參閱OLEDb.h中的 DBSTATUS。

status
[in]指定之參數的 DBSTATUS 狀態。 如需 DBSTATUS 值的資訊,請參閱 OLE DB 程式設計人員參考中的狀態,或在 oledb.h 中搜尋 DBSTATUS。

備註

true在成功或false失敗時傳回 。

SetParamString如果您嘗試設定大於 pString指定大小上限的字串,將會失敗。

使用 SetParamString 在緩衝區中設定字串參數數據。 使用 SetParam 在緩衝區中設定非字串參數數據。

另請參閱

OLE DB 消費者範本
OLE DB 消費者範本參考
CAccessor 類別
CDynamicAccessor 類別
CManualAccessor 類別