使用書籤
在您開啟資料列之前,您必須通知提供者您要使用書籤。若要達成這個目的,請在屬性集 (Property Set) 中將 DBPROP_BOOKMARKS 屬性設定為 true。提供者會將書籤擷取為資料行零,所以如果使用靜態存取子 (Accessor),就必須使用特殊巨集 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,Run Time 時才會動態地配置暫存區。在這種情況下,您可以使用不需指定暫存區長度之特殊化版本 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);
如需支援提供者書籤的詳細資訊,請參閱提供者書籤支援。