存取子和資料列集
若要設定和擷取資料,OLE DB 範本會透過 CAccessorRowset 類別使用存取子和資料列集 。 這個類別可以處理不同類型的多個存取子。
存取子類型
所有存取子都衍生自 CAccessorBase 。 CAccessorBase
同時提供參數和資料行系結。
下圖顯示存取子類型。
存取子類別
當您在設計階段知道資料庫來源的結構時,CAccessor 會使用此存取子。
CAccessor
以靜態方式將包含緩衝區的資料庫記錄系結至資料來源。當您在設計階段不知道資料庫的結構時,CDynamicAccessor 會使用此存取子。
CDynamicAccessor
呼叫IColumnsInfo::GetColumnInfo
以取得資料庫資料行資訊。 它會建立和管理存取子和緩衝區。CDynamicParameterAccessor 使用此存取子來處理未知的命令類型。 當您準備命令時,
CDynamicParameterAccessor
如果提供者支援ICommandWithParameters
,可以從 介面取得參數資訊ICommandWithParameters
。CDynamicStringAccessor 、 CDynamicStringAccessorA 和 CDynamicStringAccessorW 當您不知道資料庫架構時,請使用這些類別。
CDynamicStringAccessorA
以 ANSI 字串的形式擷取資料;CDynamicStringAccessorW
以 Unicode 字串的形式擷取資料。CManualAccessor 搭配這個類別,您可以使用任何您想要的資料類型,如果提供者可以轉換類型。 它會同時處理結果資料行和命令參數。
下表摘要說明 OLE DB 範本存取子類型中的支援。
存取子類型 | 動態 | 處理參數 | 緩衝區 | 多個存取子 |
---|---|---|---|---|
CAccessor |
No | Yes | 使用者 | Yes |
CDynamicAccessor |
是 | No | OLE DB 樣板 | No |
CDynamicParameterAccessor |
是 | Yes | OLE DB 樣板 | No |
CDynamicStringAccessor[A,W] |
是 | No | OLE DB 樣板 | No |
CManualAccessor |
是 | Yes | 使用者 | Yes |
資料列集類型
OLE DB 範本支援三種資料列集(請參閱上圖):單一資料列集(由 CRowset 實作)、大量資料列集(由 CBulkRowset 實作),以及陣列資料列集(由 CArrayRowset 實作 )。 呼叫 時 MoveNext
,單一資料列集會擷取單一資料列控制碼。 大量資料列集可以擷取多個資料列控制碼。 陣列資料列集是可以使用陣列語法存取的資料列集。
下圖顯示資料列集類型。
資料列集類別
架構資料列集 不會存取資料存放區中的資料,而是存取資料存放區的相關資訊,稱為中繼資料。 架構資料列集通常用於編譯時期不知道資料庫結構的情況,而且必須在執行時間取得。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應