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 預存程式並取得輸出參數值的範例,請參閱 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 類別