共用方式為


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] 新的資料列集大小 (資料列數)。

備註

如果您呼叫這個函式,它必須在開啟資料列集之前。

另請參閱

OLE DB 消費者範本
OLE DB 消費者範本參考