分享方式:


CDynamicStringAccessor 類別

讓您能在不知道資料庫結構描述 (資料庫的基礎結構) 的情況下,存取資料來源。

語法

template< typename BaseType, DBTYPEENUM OleDbType >
class CDynamicStringAccessorT : public CDynamicAccessor

需求

標頭檔:atldbcli.h

成員

方法

名稱 描述
GetString 擷取指定資料行的資料做為字串。
SetString 設定指定資料行的資料做為字串。

備註

雖然 CDynamicAccessor 會以提供者所報告的原生格式要求數據, CDynamicStringAccessor 但要求提供者從數據存放區擷取所有數據做為字串數據。 這特別適用於不需要計算數據存放區中值的簡單工作,例如顯示或列印數據存放區的內容。

資料存放區中資料行資料的原生類型是什麼並不重要,只要提供者可以支援資料轉換即可,它會以字串格式提供資料。 如果提供者不支援從原生數據類型轉換成字串(這並不常見),則要求呼叫會傳回成功值DB_S_ERRORSOCCURED,而對應數據行的狀態會指出DBSTATUS_E_CANTCONVERTVALUE的轉換問題。

使用 CDynamicStringAccessor 方法來取得數據行資訊。 您可以使用這個資料行資訊,在運行時間動態建立存取子。

數據行資訊會儲存在此類別所建立和管理的緩衝區中。 使用 GetString 從緩衝區取得數據,或使用 SetString 將其儲存至緩衝區

如需使用動態存取子類別的討論和範例,請參閱 使用動態存取子

CDynamicStringAccessor::GetString

擷取指定資料行的資料做為字串。

語法

BaseType* GetString(DBORDINAL nColumn) const throw();

BaseType* GetString(const CHAR* pColumnName) const throw();

BaseType* GetString(const WCHAR* pColumnName) const throw();

參數

nColumn
[in] 資料行編號。 欄號從 1 開始。 如果有任何值,則值為0會參考書籤數據行。

pColumnName
[in]包含資料行名稱的字元字串指標。

傳回值

從指定數據行擷取之字串值的指標。 值的類型為 BaseType,視是否定義_UNICODE而定,這會是 CHARWCHAR 。 如果找不到指定的數據行,則傳回NULL。

備註

第二個覆寫窗體會採用數據行名稱作為 ANSI 字串。 第三個覆寫窗體會採用數據行名稱做為 Unicode 字串。

CDynamicStringAccessor::SetString

設定指定資料行的資料做為字串。

語法

HRESULT SetString(DBORDINAL nColumn,
   BaseType* data) throw();

HRESULT SetString(const CHAR* pColumnName,
   BaseType* data) throw();

HRESULT SetString(const WCHAR* pColumnName,
   BaseType* data) throw();

參數

nColumn
[in] 資料行編號。 欄號從 1 開始。 0 的特殊值會參考書籤數據行,如果有的話。

pColumnName
[in]包含資料行名稱的字元字串指標。

data
[in]要寫入指定數據行之字串數據的指標。

傳回值

要設定指定數據行之字串值的指標。 值的類型為 BaseType,視是否定義_UNICODE而定,這會是 CHARWCHAR

備註

第二個覆寫窗體會採用數據行名稱做為 ANSI 字串,而第三個覆寫窗體會採用數據行名稱做為 Unicode 字串。

如果_SECURE_ATL定義為具有非零值,如果輸入 數據字串超過所參考數據 行的最大允許長度,就會產生運行時間判斷提示失敗。 否則,如果輸入字串長度超過允許的最大長度,則會截斷。

另請參閱

OLE DB 消費者範本
OLE DB 消費者範本參考
CAccessor 類別
CDynamicParameterAccessor 類別
CManualAccessor 類別
CDynamicAccessor 類別
CDynamicStringAccessorA 類別
CDynamicStringAccessorW 類別
CXMLAccessor 類別