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 | 由 AddRefRows 和 ReleaseRows 呼叫。 使用者未直接呼叫。 |
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_bCanFetchBackwards
為 true
。
IRowsetImpl::m_bCanScrollBack
指出提供者是否可以讓數據指標向後捲動。
語法
unsigned m_bCanScrollBack:1;
備註
連結至 DBPROP_CANSCROLLBACKWARDS
群組中的 DBPROPSET_ROWSET
屬性。 提供者必須支援 DBPROP_CANSCROLLBACKWARDS
m_bCanFetchBackwards
為 true
。
IRowsetImpl::m_bReset
用來判斷數據指標位置是否定義於數據列集上的位旗標。
語法
unsigned m_bReset:1;
備註
如果取用者使用負數lOffset
或 cRows 呼叫 GetNextRows 且 m_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 概觀。