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] 新的資料列集大小 (資料列數)。
備註
如果您呼叫這個函式,它必須在開啟資料列集之前。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應