Επεξεργασία

Κοινή χρήση μέσω


CBulkRowset Class

Fetches and manipulates rows to work on data in bulk by retrieving multiple row handles with a single call.

Syntax

template <class TAccessor>
class CBulkRowset : public CRowset<TAccessor>

Parameters

TAccessor
An accessor class.

Requirements

Header: atldbcli.h

Members

Methods

Name Description
AddRefRows Increments the reference count.
CBulkRowset Constructor.
MoveFirst Retrieves the first row of data, performing a new bulk fetch if necessary.
MoveLast Moves to the last row.
MoveNext Retrieves the next row of data.
MovePrev Moves to the previous row.
MoveToBookmark Fetches the row marked by a bookmark or the row at a specified offset from that bookmark.
MoveToRatio Fetches rows starting from a fractional position in the rowset.
ReleaseRows Sets the current row (m_nCurrentRow) to zero and releases all rows.
SetRows Sets the number of row handles to be retrieved by one call.

Example

The following example demonstrates use of the CBulkRowset class.

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

Calls IRowset::AddRefRows to increment the reference count for all rows currently retrieved from the bulk rowset.

Syntax

HRESULT AddRefRows() throw();

Return Value

A standard HRESULT.

CBulkRowset::CBulkRowset

Creates a new CBulkRowset object and sets the default row count to 10.

Syntax

CBulkRowset();

CBulkRowset::MoveFirst

Retrieves the first row of data.

Syntax

HRESULT MoveFirst() throw();

Return Value

A standard HRESULT.

CBulkRowset::MoveLast

Moves to the last row.

Syntax

HRESULT MoveLast() throw();

Return Value

A standard HRESULT.

CBulkRowset::MoveNext

Retrieves the next row of data.

Syntax

HRESULT MoveNext() throw();

Return Value

A standard HRESULT. When the end of the rowset has been reached, returns DB_S_ENDOFROWSET.

CBulkRowset::MovePrev

Moves to the previous row.

Syntax

HRESULT MovePrev() throw();

Return Value

A standard HRESULT.

CBulkRowset::MoveToBookmark

Fetches the row marked by a bookmark or the row at a specified offset (lSkip) from that bookmark.

Syntax

HRESULT MoveToBookmark(const CBookmarkBase& bookmark,
   DBCOUNTITEM lSkip = 0) throw();

Parameters

bookmark
[in] A bookmark marking the location from which you want to fetch data.

lSkip
[in] The number count of rows from the bookmark to the target row. If lSkip is zero, the first row fetched is the bookmarked row. If lSkip is 1, the first row fetched is the row after the bookmarked row. If lSkip is -1, the first row fetched is the row before the bookmarked row.

Return Value

See IRowset::GetData in the OLE DB Programmer's Reference.

CBulkRowset::MoveToRatio

Fetches rows starting from a fractional position in the rowset.

Syntax

HRESULT MoveToRatio(DBCOUNTITEM nNumerator,
   DBCOUNTITEM nDenominator)throw();

Parameters

nNumerator
[in] The numerator used to determine the fractional position from which to fetch data.

nDenominator
[in] The denominator used to determine the fractional position from which to fetch data.

Return Value

A standard HRESULT.

Remarks

MoveToRatio fetches the rows roughly according to the following formula:

(nNumerator * RowsetSize ) / nDenominator

Where RowsetSize is the size of the rowset, measured in rows. The accuracy of this formula depends on the specific provider. For details, see IRowsetScroll::GetRowsAtRatio in the OLE DB Programmer's Reference.

CBulkRowset::ReleaseRows

Calls IRowset::ReleaseRows to decrement the reference count for all rows currently retrieved from the bulk rowset.

Syntax

HRESULT ReleaseRows() throw();

Return Value

A standard HRESULT.

CBulkRowset::SetRows

Sets the number of row handles retrieved by each call.

Syntax

void SetRows(DBROWCOUNT nRows) throw();

Parameters

nRows
[in] The new size of the rowset (number of rows).

Remarks

If you call this function, it must be before the rowset is opened.

See also

OLE DB Consumer Templates
OLE DB Consumer Templates Reference