使用书签

在打开行集之前,必须告知提供程序你要使用书签。 为此,请在属性集中将 DBPROP_BOOKMARKS 属性设置为 true。 提供程序检索第 0 列的书签,因此如果你使用的是静态访问器,则必须使用特殊宏 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;
CSession session;
product.Open(session, "Products", &propset);

如果使用 CDynamicAccessor,则缓冲区在运行时动态设置。 在这种情况下,可使用不指定缓冲区长度的专用版本的 CBookmark。 使用函数 GetBookmark 从当前记录检索书签,如以下代码示例所示:

CTable<CDynamicAccessor> product;
CBookmark<> bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);
CSession session;

propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);

有关在提供程序中支持书签的信息,请参阅提供程序对书签的支持

另请参阅

使用访问器