使用书签
在打开行集合之前,必须告知提供程序您希望使用书签。为此,请在属性集中将 DBPROP_BOOKMARKS 属性设置为 true。提供程序将书签检索为列零,因此如果使用的是静态访问器,则必须使用特殊宏 BOOKMARK_ENTRY 和 CBookmark 类。CBookmark 是模板类,其参数是书签缓冲区的长度(以字节为单位)。书签所需的缓冲区长度取决于提供程序。如果使用的是 ODBC OLE DB 提供程序(如下例所示),则此缓冲区必须为 4 个字节。
class CProducts
{
public:
CBookmark<4> bookmark;
BEGIN_COLUMN_MAP(CProducts)
BOOKMARK_ENTRY(bookmark)
END_COLUMN_MAP()
};
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
CTable<CAccessor<CProducts> > product;
product.Open(session, "Products", &propset);
如果使用 CDynamicAccessor,则此缓冲区将在运行时动态分配。在这种情况下,可以使用 CBookmark 的专用版本,从而不必指定缓冲区的长度。使用 GetBookmark 函数从当前记录中检索书签,如下面的代码示例所示:
CTable<CDynamicAccessor> product;
CBookmark<> bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);
有关在提供程序中支持书签的信息,请参见提供程序的书签支持。