存取子和資料列集
若要設定和擷取數據,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 | User | Yes |
CDynamicAccessor |
是 | No | OLE DB 樣板 | No |
CDynamicParameterAccessor |
.是 | Yes | OLE DB 樣板 | No |
CDynamicStringAccessor[A,W] |
.是 | No | OLE DB 樣板 | No |
CManualAccessor |
.是 | Yes | User | Yes |
數據列集類型
OLE DB 範本支援三種數據列集(請參閱上圖):單一數據列集(由 CRowset 實作)、大量數據列集(由 CBulkRowset 實作),以及數位數據列集(由 CArrayRowset 實作)。 呼叫 時 MoveNext
,單一數據列集會擷取單一數據列句柄。 大量數據列集可以擷取多個數據列句柄。 陣列數據列集是可以使用數位語法存取的數據列集。
下圖顯示數據列集類型。
數據列集類別
架構數據列集 不會存取數據存放區中的數據,而是存取數據存放區的相關信息,稱為元數據。 架構數據列集通常用於編譯時期不知道資料庫結構的情況,而且必須在運行時間取得。