存取子和資料列集

OLE DB 樣板會透過 CAccessorRowset 類別使用存取子和資料列集,來設定和擷取資料。 這個類別可以處理不同型別的多重存取子。

存取子型別

衍生自 CAccessorBase 的所有存取子。 CAccessorBase 同時提供參數和資料行繫結。

下圖顯示存取子型別。

存取子類別

存取子型別

  • CAccessor:當您在設計階段就知道資料庫來源的結構時,請使用這個存取子。 CAccessor 會靜態繫結包含緩衝區的資料庫記錄至資料來源。

  • CDynamicAccessor:當您在設計階段不知道資料庫的結構時,請使用這個存取子。 CDynamicAccessor 呼叫 IColumnsInfo::GetColumnInfo 以取得資料庫資料行資訊。 它可以建立和管理存取子和緩衝區。

  • CDynamicParameterAccessor:請使用這個存取子來處理未知的命令類型。 CDynamicParameterAccessor 會在您準備命令時取得 ICommandWithParameters 介面的參數資訊 (如果提供者可以支援 ICommandWithParameters)。

  • CDynamicStringAccessorCDynamicStringAccessorACDynamicStringAccessorW:當您不知道資料庫的結構描述時,請使用這些類別。 CDynamicStringAccessorA 會將資料擷取為 ANSI 字串,CDynamicStringAccessorW 則會將資料擷取為 Unicode 字串。

  • CManualAccessor:使用了這個類別,您就能在提供者可轉換型別的情況下,使用任何想要的資料型別。 它可以同時處理結果資料行和命令參數。

下表摘要了 OLE DB 樣板的存取子型別支援。

存取子型別

Dynamic

處理參數

緩衝區

多重存取子

CAccessor

使用者

CDynamicAccessor

OLE DB 樣板

CDynamicParameterAccessor

OLE DB 樣板

CDynamicStringAccessor[A,W]

OLE DB 樣板

CManualAccessor

使用者

資料列集型別

OLE DB 樣板支援三種資料列集 (請參考上圖):單一資料列集 (由 CRowset 實作)、大量資料列集 (由 CBulkRowset 實作) 和陣列資料列集 (由 CArrayRowset 實作)。 單一資料列集可以在呼叫 MoveNext 時擷取一個資料列控制代碼。 大量資料列集可以擷取多個資料列控制代碼。 陣列資料列集是可以使用陣列語法存取的資料列集。

下圖顯示資料列集型別。

資料列集類別

RowsetType 圖形

結構描述資料列集不會存取資料存放區裡的資料,而是存取資料存放區的相關資訊,也就是中繼資料 (Metadata)。 結構描述 (Schema) 資料列集通常會使用於以下狀況:在編譯時期還不知道資料庫結構,但必須在執行階段取得該結構。

請參閱

概念

OLE DB 消費者樣板 (C++)