IRowsetLocateImpl 类
实现 OLE DB IRowsetLocate 接口,该接口从行集中提取任意行。
语法
template <
class T,
class RowsetInterface,
class RowClass = CSimpleRow,
class MapClass = CAtlMap < RowClass::KeyType, RowClass* >,
class BookmarkKeyType = LONG,
class BookmarkType = LONG,
class BookmarkMapClass = CAtlMap < RowClass::KeyType, RowClass* >>
class ATL_NO_VTABLE IRowsetLocateImpl : public IRowsetImpl<
T,
RowsetInterface,
RowClass,
MapClass>
参数
T
派生自 IRowsetLocateImpl
的类。
RowsetInterface
派生自 IRowsetImpl
的类。
RowClass
HROW
的存储单元。
MapClass
提供程序持有的所有行句柄的存储单元。
BookmarkKeyType
书签的类型,如 LONG 或字符串。 普通书签的长度必须至少为两个字节。 (为 OLE DB 标准书签DBBMK_FIRST
、DBBMK_LAST
和 DBBMK_INVALID
保留单字节长度。)
BookmarkType
用于维护书签到数据关系的映射机制。
BookmarkMapClass
书签持有的所有行句柄的存储单元。
要求
标头: atldb.h
成员
接口方法
名称 | 描述 |
---|---|
比较 | 比较两个书签。 |
GetRowsAt | 提取行,起始行的位置为书签加上一个偏移量得到的位置。 |
GetRowsByBookmark | 提取与指定书签匹配的行。 |
哈希 | 返回指定书签的哈希值。 |
数据成员
名称 | 描述 |
---|---|
m_rgBookmarks | 书签数组。 |
注解
IRowsetLocateImpl
是 IRowsetUpdate 接口的 OLE DB 模板实现。 IRowsetLocate
用于从行集中提取任意行。 不实现此接口的行集是行集 sequential
。 行集上存在 IRowsetLocate
时,第 0 列是行的书签;读取此列将获取可用于重新定位到同一行的书签值。
IRowsetLocateImpl
用于在提供程序中实现书签支持。 书签是占位符(行集上的索引),让使用者能够快速返回到行,从而允许高速访问数据。 提供程序确定哪些书签可以唯一标识行。 使用 IRowsetLocateImpl
方法,可以比较书签、按偏移量提取行、按书签提取行,以及返回书签的哈希值。
要在行集中支持 OLE DB 书签,请使行集从此类继承。
有关实现书签支持的信息,请找到平台 SDK 中 OLE DB 程序员参考中的 Visual C++ 程序员指南和书签,参阅其中的书签提供程序支持。
IRowsetLocateImpl::Compare
比较两个书签。
语法
STDMETHOD (Compare )(HCHAPTER /* hReserved */,
DBBKMARK cbBookmark1,
const BYTE* pBookmark1,
DBBKMARK cbBookmark2,
const BYTE* pBookmark2,
DBCOMPARE* pComparison);
参数
请参阅 OLE DB 程序员参考中的 IRowsetLocate::Compare。
备注
书签可以是标准 OLE DB 定义的标准书签(DBBMK_FIRST
、DBBMK_LAST
或 DBBMK_INVALID
)。 pComparison
中返回的值指示两个书签之间的关系:
DBCOMPARE_LT(
cbBookmark1
位于cbBookmark2
之前。)DBCOMPARE_EQ(
cbBookmark1
与cbBookmark2
并列。)DBCOMPARE_GT(
cbBookmark1
位于cbBookmark2
之后。)DBCOMPARE_NE(书签并列且未排序。)
DBCOMPARE_NOTCOMPARABLE(无法比较书签。)
IRowsetLocateImpl::GetRowsAt
提取行,起始行的位置为书签加上一个偏移量得到的位置。
语法
STDMETHOD (GetRowsAt )(HWATCHREGION /* hReserved1 */,
HCHAPTER hReserved2,
DBBKMARK cbBookmark,
const BYTE* pBookmark,
DBROWOFFSET lRowsOffset,
DBROWCOUNT cRows,
DBCOUNTITEM* pcRowsObtained,
HROW** prghRows);
参数
请参阅 OLE DB 程序员参考中的 IRowsetLocate::GetRowsAt。
备注
若要改用游标位置,请使用 IRowset::GetRowsAt。
IRowsetLocateImpl::GetRowsAt
不更改游标位置。
IRowsetLocateImpl::GetRowsByBookmark
提取与指定书签匹配的一行或多行。
语法
STDMETHOD (GetRowsByBookmark )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const DBBKMARK rgcbBookmarks[],
const BYTE* rgpBookmarks,
HROW rghRows[],
DBROWSTATUS* rgRowStatus[]);
参数
hReserved
[in] 对应于 IRowsetLocate::GetRowsByBookmark 的 hChapter 参数。
有关其他参数,请参阅 OLE DB 程序员参考中的 IRowsetLocate::GetRowsByBookmark。
注解
书签可以是定义的值,也可以是 OLE DB 标准书签(DBBMK_FIRST
或 DBBMK_LAST
)。 不更改游标位置。
IRowsetLocateImpl::Hash
返回指定书签的哈希值。
语法
STDMETHOD (Hash )(HCHAPTER /* hReserved */,
DBBKMARK cbBookmarks,
const DBBKMARK* rgcbBookmarks[],
const BYTE* rgpBookmarks[],
DBHASHVALUE rgHashValues[],
DBROWSTATUS rgBookmarkStatus[]);
参数
hReserved
[in] 对应于 IRowsetLocate::Hash 的 hChapter 参数。
有关其他参数,请参阅 OLE DB 程序员参考中的 IRowsetLocate::Hash。
IRowsetLocateImpl::m_rgBookmarks
书签数组。
语法
CAtlArray<DBROWCOUNT> m_rgBookmarks;
另请参阅
OLE DB 提供程序模板
OLE DB 提供程序模板体系结构
IRowsetLocate:IRowsetProvider Support for Bookmarks
书签