CBulkRowset 類別
使用單一呼叫擷取多個數據列句柄,擷取及操作數據列以大量處理數據。
語法
template <class TAccessor>
class CBulkRowset : public CRowset<TAccessor>
參數
TAccessor
存取子類別。
需求
標頭檔:atldbcli.h
成員
方法
名稱 | 描述 |
---|---|
AddRefRows | 遞增參考計數。 |
CBulkRowset | 建構函式。 |
MoveFirst | 擷取第一個數據列,視需要執行新的大量擷取。 |
MoveLast | 移至最後一個數據列。 |
MoveNext | 擷取下一個數據列。 |
MovePrev | 移至上一個數據列。 |
MoveToBookmark | 從該書籤的指定位移擷取以書籤標記的數據列或數據列。 |
MoveToRatio | 從數據列集中的小數位置開始擷取數據列。 |
ReleaseRows | 將目前的數據列 (m_nCurrentRow ) 設定為零,並釋放所有數據列。 |
SetRows | 設定要由一個呼叫擷取的數據列句柄數目。 |
範例
下列範例示範 CBulkRowset
如何使用 類別。
class CCustomerData
{
public:
char m_szField1[50];
BEGIN_COLUMN_MAP(CCustomerData)
COLUMN_ENTRY(1, m_szField1)
END_COLUMN_MAP()
};
void DoCBulkRowsetTest()
{
CoInitialize(NULL);
CCommand<CAccessor<CCustomerData>, CBulkRowset > cmd;
CDataSource ds;
// Open up data link dialogs to create a data source
ds.Open();
CSession session;
session.Open(ds);
// Could call SetRows() here if you want to fetch
// more than 10 HROWs at a time.
cmd.Open(session, L"Select * from customer");
cmd.MoveFirst();
// Note that the CBulkRowset by default fetched 10 HROWs at a time
// so that the MoveNext call will not have to make the GetNextRows
// call to get the second HROW because it has already been fetched
//by the MoveFirst() call above.
cmd.MoveNext();
cmd.Close();
session.Close();
ds.Close();
}
CBulkRowset::AddRefRows
呼叫 IRowset::AddRefRows ,以遞增目前從大量數據列集擷取之所有數據列的參考計數。
語法
HRESULT AddRefRows() throw();
傳回值
標準 HRESULT。
CBulkRowset::CBulkRowset
建立新的 CBulkRowset
物件並且將預設資料列計數設定為 10。
語法
CBulkRowset();
CBulkRowset::MoveFirst
擷取第一個數據列。
語法
HRESULT MoveFirst() throw();
傳回值
標準 HRESULT。
CBulkRowset::MoveLast
移至最後一個數據列。
語法
HRESULT MoveLast() throw();
傳回值
標準 HRESULT。
CBulkRowset::MoveNext
擷取下一個數據列。
語法
HRESULT MoveNext() throw();
傳回值
標準 HRESULT。 到達數據列集結尾時,會傳回DB_S_ENDOFROWSET。
CBulkRowset::MovePrev
移至上一個數據列。
語法
HRESULT MovePrev() throw();
傳回值
標準 HRESULT。
CBulkRowset::MoveToBookmark
從該書籤擷取以書籤標記的數據列或位於指定位移 (lSkip) 的數據列。
語法
HRESULT MoveToBookmark(const CBookmarkBase& bookmark,
DBCOUNTITEM lSkip = 0) throw();
參數
bookmark
[in] 標記您要從中擷取資料之位置的書籤。
lSkip
[in] 從書籤到目標資料列的資料列計數。 如果 lSkip 為零,則擷取的第一個數據列是書籤數據列。 如果 lSkip 為 1,則擷取的第一個數據列是書籤數據列之後的數據列。 如果 lSkip 為 -1,則擷取的第一個數據列是書籤數據列之前的數據列。
傳回值
請參閱 OLE DB 程式設計人員參考中的 IRowset::GetData。
CBulkRowset::MoveToRatio
從數據列集中的小數位置開始擷取數據列。
語法
HRESULT MoveToRatio(DBCOUNTITEM nNumerator,
DBCOUNTITEM nDenominator)throw();
參數
nNumerator
[in]用來判斷要從中擷取數據的分數位置的分子。
nDenominator
[in]用來判斷要從中擷取數據的分數位置的分母。
傳回值
標準 HRESULT。
備註
MoveToRatio
根據下列公式大致擷取數據列:
(nNumerator * RowsetSize ) / nDenominator
其中 RowsetSize
是數據列集的大小,以數據列為單位。 此公式的精確度取決於特定提供者。 如需詳細資訊,請參閱 OLE DB 程式設計人員參考中的 IRowsetScroll::GetRowsAtRatio。
CBulkRowset::ReleaseRows
呼叫 IRowset::ReleaseRows ,以遞減目前從大量數據列集擷取之所有數據列的參考計數。
語法
HRESULT ReleaseRows() throw();
傳回值
標準 HRESULT。
CBulkRowset::SetRows
設定每個呼叫所擷取的資料列控制代碼數。
語法
void SetRows(DBROWCOUNT nRows) throw();
參數
nRows
[in] 新的資料列集大小 (資料列數)。
備註
如果您呼叫這個函式,它必須在開啟資料列集之前。