IRowsetImpl 類別

提供 IRowset 介面的實作。

語法

template <
   class T,
   class RowsetInterface,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap <
      RowClass::KeyType,
      RowClass*>>
class ATL_NO_VTABLE IRowsetImpl : public RowsetInterface

參數

T
您的類別衍生自 IRowsetImpl

RowsetInterface
衍生自 IRowsetImpl的類別。

RowClass
HROW儲存單位。

MapClass
提供者所持有之所有數據列句柄的儲存單位。

需求

Header: atldb.h

成員

方法

名稱 描述
AddRefRows 將參考計數加入至現有的數據列句柄。
CreateRow GetNextRows 呼叫以設定新的 HROW。 使用者未直接呼叫。
GetData 從數據列集的數據列復本擷取數據。
GetDBStatus 傳回指定欄位的狀態。
GetNextRows 循序擷取數據列,並記住先前的位置。
IRowsetImpl 建構函式。 使用者未直接呼叫。
RefRows AddRefRowsReleaseRows 呼叫。 使用者未直接呼叫。
ReleaseRows 釋放數據列。
RestartPosition 將下一個擷取位置重新置放到其初始位置;也就是說,第一次建立數據列集時的位置。
SetDBStatus 設定指定欄位的狀態旗標。

資料成員

名稱 描述
m_bCanFetchBack 指出提供者是否支援回溯擷取。
m_bCanScrollBack 指出提供者是否可以讓數據指標向後捲動。
m_bReset 指出提供者是否重設其數據指標位置。 這在 GetNextRows向後捲動或向後擷取時具有特殊意義。
m_iRowset 數據列集的索引,表示數據指標。
m_rgRowHandles 數據列句柄的清單。

備註

IRowset 是基底數據列集介面。

IRowsetImpl::AddRefRows

將參考計數加入至現有的數據列句柄。

語法

STDMETHOD(AddRefRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::AddRefRows

IRowsetImpl::CreateRow

GetNextRows 所呼叫的協助程式方法,用來配置新的 HROW

語法

HRESULT CreateRow(DBROWOFFSET lRowsOffset,
   DBCOUNTITEM& cRowsObtained,
   HROW* rgRows);

參數

lRowsOffset
正在建立之數據列的數據指標位置。

cRowsObtained
傳回給用戶的參考,指出建立的數據列數目。

rgRows
傳回給呼叫端的陣列 HROW,其中包含新建立的數據列句柄。

備註

如果資料列存在,這個方法會呼叫 AddRefRows 並傳回 。 否則,它會配置 RowClass 範本變數的新實例,並將它新增至 m_rgRowHandles

IRowsetImpl::GetData

從數據列集的數據列復本擷取數據。

語法

STDMETHOD(GetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pDstData);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::GetData

某些參數對應至 不同名稱的 OLE DB 程式設計人員參考 參數,如 中所述 IRowset::GetData

OLE DB 樣本參數 OLE DB 程式設計人員參考 參數
pDstData pData

備註

也使用 OLE DB 資料轉換 DLL 處理資料轉換。

IRowsetImpl::GetDBStatus

傳回指定欄位的 DBSTATUS 狀態旗標。

語法

virtual DBSTATUS GetDBStatus(RowClass* currentRow,
   ATLCOLUMNINFO* columnNames);

參數

currentRow
[in]目前的數據列。

columnNames
[in]要求狀態的數據行。

傳回值

數據 行的 DBSTATUS 旗標。

IRowsetImpl::GetNextRows

循序擷取數據列,並記住先前的位置。

語法

STDMETHOD(GetNextRows )(HCHAPTER hReserved,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::GetNextRows

IRowsetImpl::IRowsetImpl

建構函式。

語法

IRowsetImpl();

備註

您通常不需要直接呼叫此方法。

IRowsetImpl::RefRows

AddRefRows 和 ReleaseRows 呼叫,以遞增或釋放現有數據列句柄的參考計數。

語法

HRESULT RefRows(DBCOUNTITEM cRows,
   const HROWrghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[],
   BOOL bAdd);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::AddRefRows

傳回值

標準 HRESULT 值。

IRowsetImpl::ReleaseRows

釋放數據列。

語法

STDMETHOD(ReleaseRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBROWOPTIONS rgRowOptions[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::ReleaseRows

IRowsetImpl::RestartPosition

將下一個擷取位置重新置放到其初始位置;也就是說,第一次建立數據列集時的位置。

語法

STDMETHOD(RestartPosition )(HCHAPTER /* hReserved */);

參數

請參閱 OLE DB 程式設計人員參考中的 IRowset::RestartPosition

備註

數據列集位置未定義,直到呼叫 為止 GetNextRow 。 您可以呼叫 RestartPosition ,然後向後擷取或向後捲動,在數據列集中向後移動。

IRowsetImpl::SetDBStatus

設定指定欄位的 DBSTATUS 狀態旗標。

語法

virtual HRESULT SetDBStatus(DBSTATUS* statusFlags,
   RowClass* currentRow,
   ATLCOLUMNINFO* columnInfo);

參數

statusFlags
為數據行設定的 DBSTATUS 旗標。

currentRow
目前的資料列。

columnInfo
正在設定狀態的數據行。

傳回值

標準 HRESULT 值。

備註

提供者會覆寫此函式,以提供DBSTATUS_S_ISNULL和DBSTATUS_S_DEFAULT的特殊處理。

IRowsetImpl::m_bCanFetchBack

指出提供者是否支援回溯擷取。

語法

unsigned m_bCanFetchBack:1;

備註

連結至 DBPROP_CANFETCHBACKWARDS 群組中的 DBPROPSET_ROWSET 屬性。 提供者必須支援 DBPROP_CANFETCHBACKWARDS m_bCanFetchBackwardstrue

IRowsetImpl::m_bCanScrollBack

指出提供者是否可以讓數據指標向後捲動。

語法

unsigned  m_bCanScrollBack:1;

備註

連結至 DBPROP_CANSCROLLBACKWARDS 群組中的 DBPROPSET_ROWSET 屬性。 提供者必須支援 DBPROP_CANSCROLLBACKWARDS m_bCanFetchBackwardstrue

IRowsetImpl::m_bReset

用來判斷數據指標位置是否定義於數據列集上的位旗標。

語法

unsigned m_bReset:1;

備註

如果取用者使用負數lOffset或 cRows 呼叫 GetNextRowsm_bReset 為 true,GetNextRows請移至數據列集的結尾。 如果 m_bReset 為 false,取用者會收到符合 OLE DB 規格的錯誤碼。 當第一次建立數據列集,以及取用者呼叫 IRowsetImpl::RestartPosition 時,旗m_bReset標會設定為 true 。 當您呼叫 GetNextRows時,它會設定為 false

IRowsetImpl::m_iRowset

數據列集的索引,表示數據指標。

語法

DBROWOFFSET m_iRowset;

IRowsetImpl::m_rgRowHandles

提供者目前包含的資料欄位柄對應,以回應 GetNextRows

語法

MapClass m_rgRowHandles;

備註

藉由呼叫 ReleaseRows來移除數據列句柄。 如需 MapClass 的定義,請參閱 IRowsetImpl 概

另請參閱

OLE DB 提供者範本
OLE DB 提供者範本架構
CSimpleRow 類別