Share via


IRowsetImpl 类

提供 IRowset 接口的实现。

语法

template <
   class T,
   class RowsetInterface,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap <
      RowClass::KeyType,
      RowClass*>>
class ATL_NO_VTABLE IRowsetImpl : public RowsetInterface

参数

T
你的类,派生自 IRowsetImpl

RowsetInterface
派生自 IRowsetImpl 的类。

RowClass
HROW 的存储单元。

MapClass
提供程序持有的所有行句柄的存储单元。

要求

标头: atldb.h

成员

方法

名称 描述
AddRefRows 向现有的行句柄添加引用数。
CreateRow GetNextRows 调用以分配新的 HROW。 用户不直接调用。
GetData 从行集的行副本中检索数据。
GetDBStatus 返回指定字段的状态。
GetNextRows 按顺序提取行,记住前一个位置。
IRowsetImpl 构造函数。 用户不直接调用。
RefRows AddRefRowsReleaseRows 调用。 用户不直接调用。
ReleaseRows 释放行。
RestartPosition 将下一个提取位置重新定位到其初始位置;也就是说,在第一次创建行集时的位置。
SetDBStatus 设置指定字段的状态标志。

数据成员

名称 描述
m_bCanFetchBack 指示提供程序是否支持向后提取。
m_bCanScrollBack 指示提供程序是否可以使其光标向后滚动。
m_bReset 指示提供程序是否已重置其游标位置。 在 GetNextRows 中向后滚动或向后获取时有特殊含义。
m_iRowset 行集的索引,表示游标。
m_rgRowHandles 行句柄列表。

备注

IRowset 是基本行集接口。

IRowsetImpl::AddRefRows

向现有的行句柄添加引用数。

语法

STDMETHOD(AddRefRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

参数

请参阅 OLE DB 程序员参考中的 IRowset::AddRefRows

IRowsetImpl::CreateRow

GetNextRows 调用的帮助程序方法,以分配一个新的 HROW

语法

HRESULT CreateRow(DBROWOFFSET lRowsOffset,
   DBCOUNTITEM& cRowsObtained,
   HROW* rgRows);

参数

lRowsOffset
正在创建的行的游标位置。

cRowsObtained
传递回用户的引用,指示创建的行数。

rgRows
返回给调用方的 HROW 数组,其中包含新创建的行句柄。

备注

如果行存在,则此方法调用 AddRefRows 并返回。 否则,此方法将分配 RowClass 模板变量的新实例并将其添加到 m_rgRowHandles

IRowsetImpl::GetData

从行集的行副本中检索数据。

语法

STDMETHOD(GetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pDstData);

参数

请参阅 OLE DB 程序员参考中的 IRowset::GetData

部分参数对应不同名称的“OLE DB 程序员参考”参数,在 IRowset::GetData 中进行了说明

OLE DB 模板参数 “OLE DB 程序员参考”参数
pDstData pData

备注

还将使用 OLE DB 数据转换 DLL 处理数据转换。

IRowsetImpl::GetDBStatus

返回指定字段的 DBSTATUS 状态标志。

语法

virtual DBSTATUS GetDBStatus(RowClass* currentRow,
   ATLCOLUMNINFO* columnNames);

参数

currentRow
[in] 当前行。

columnNames
[in] 正在请求其状态的列。

返回值

列的 DBSTATUS 标志。

IRowsetImpl::GetNextRows

按顺序提取行,记住前一个位置。

语法

STDMETHOD(GetNextRows )(HCHAPTER hReserved,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

参数

请参阅 OLE DB 程序员参考中的 IRowset::GetNextRows

IRowsetImpl::IRowsetImpl

构造函数。

语法

IRowsetImpl();

备注

你通常不需要直接调用此方法。

IRowsetImpl::RefRows

AddRefRowsReleaseRows 调用以增加或释放对现有行句柄的引用计数。

语法

HRESULT RefRows(DBCOUNTITEM cRows,
   const HROWrghRows[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[],
   BOOL bAdd);

参数

请参阅 OLE DB 程序员参考中的 IRowset::AddRefRows

返回值

标准 HRESULT 值。

IRowsetImpl::ReleaseRows

释放行。

语法

STDMETHOD(ReleaseRows )(DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBROWOPTIONS rgRowOptions[],
   DBREFCOUNT rgRefCounts[],
   DBROWSTATUS rgRowStatus[]);

参数

请参阅“OLE DB 程序员参考”中的 IRowsetChange::ReleaseRows

IRowsetImpl::RestartPosition

将下一个提取位置重新定位到其初始位置;也就是说,在第一次创建行集时的位置。

语法

STDMETHOD(RestartPosition )(HCHAPTER /* hReserved */);

参数

请参阅 OLE DB 程序员参考中的 IRowset::RestartPosition

备注

GetNextRow 被调用之前,行集位置处于未定义状态。 你可以通过调用 RestartPosition 然后获取或向后滚动,以此在行集中向后移动。

IRowsetImpl::SetDBStatus

设置指定字段的 DBSTATUS 状态标志。

语法

virtual HRESULT SetDBStatus(DBSTATUS* statusFlags,
   RowClass* currentRow,
   ATLCOLUMNINFO* columnInfo);

参数

statusFlags
要为列设置的 DBSTATUS 标志。

currentRow
当前行。

columnInfo
正在为其设置状态的列。

返回值

标准 HRESULT 值。

备注

提供程序覆盖此函数以提供对 DBSTATUS_S_ISNULL 和 DBSTATUS_S_DEFAULT 的特殊处理。

IRowsetImpl::m_bCanFetchBack

指示提供程序是否支持向后提取。

语法

unsigned m_bCanFetchBack:1;

备注

链接到 DBPROPSET_ROWSET 组中的 DBPROP_CANFETCHBACKWARDS 属性。 提供程序必须支持 DBPROP_CANFETCHBACKWARDS 才能让 m_bCanFetchBackwards 成为 true

IRowsetImpl::m_bCanScrollBack

指示提供程序是否可以使其光标向后滚动。

语法

unsigned  m_bCanScrollBack:1;

备注

链接到 DBPROPSET_ROWSET 组中的 DBPROP_CANSCROLLBACKWARDS 属性。 提供程序必须支持 DBPROP_CANSCROLLBACKWARDS 才能让 m_bCanFetchBackwards 成为 true

IRowsetImpl::m_bReset

一个位标志,用于确定游标位置是否在行集上定义。

语法

unsigned m_bReset:1;

备注

如果消费者使用负 lOffset 或 cRows 调用 GetNextRows 并且 m_bReset 为 true,则 GetNextRows 移动到行集的末尾。 如果 m_bReset 为 false,则使用者会收到符合 OLE DB 规范的错误代码。 当首次创建行集以及使用者调用 IRowsetImpl::RestartPosition 时,m_bReset 标志将被设置为 true。 在你调用 GetNextRows 时,此标志将被设置为 false

IRowsetImpl::m_iRowset

行集的索引,表示游标。

语法

DBROWOFFSET m_iRowset;

IRowsetImpl::m_rgRowHandles

提供者当前包含的行句柄映射以响应 GetNextRows

语法

MapClass m_rgRowHandles;

备注

将通过调用 ReleaseRows 来移除行句柄。 有关 MapClass 的定义,请参阅 IRowsetImpl 概述

另请参阅

OLE DB 提供程序模板
OLE DB 提供程序模板体系结构
CSimpleRow 类