CBulkRowset 类

通过使用单次调用检索多个行句柄,提取并操作行以批量处理数据。

语法

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

参数

TAccessor
一个访问器类。

要求

标头: atldbcli.h

成员

方法

名称 描述
AddRefRows 递增引用计数。
CBulkRowset 构造函数。
MoveFirst 检索第一行数据,必要时进行新的批量提取。
MoveFirst 移动到最后一行。
MoveNext 检索下一行数据。
MovePrev 移动到上一行。
MoveToBookmark 提取用书签标记的行或距离该书签指定偏移量的行。
MoveToRatio 从行集中的分数位置开始提取行。
ReleaseRows 将当前行 (m_nCurrentRow) 设置为 0 并释放所有行。
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 以递增当前从 BULK 行集中检索到的所有行的引用计数。

语法

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 为 0,则提取的第一行是添加了书签的行。 如果 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 以递减当前从 BULK 行集中检索到的所有行的引用计数。

语法

HRESULT ReleaseRows() throw();

返回值

标准 HRESULT。

CBulkRowset::SetRows

设置每个调用检索的行句柄数量。

语法

void SetRows(DBROWCOUNT nRows) throw();

参数

nRows
[in] 行集的新大小(行数)。

备注

如果调用此函数,则它必须在行集之前打开。

另请参阅

OLE DB 使用者模板
OLE DB 使用者模板参考