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 | 由 AddRefRows 和 ReleaseRows 调用。 用户不直接调用。 |
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
由 AddRefRows 和 ReleaseRows 调用以增加或释放对现有行句柄的引用计数。
语法
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 概述。