次の方法で共有


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 や文字列など)。 通常のブックマークは、少なくとも 2 バイトの長さがある必要があります (1 バイト長は、OLE DB 標準ブックマーク DBBMK_FIRSTDBBMK_LAST、および DBBMK_INVALID 用に予約されています)。

BookmarkType
ブックマークとデータのリレーションシップを維持するためのマッピング メカニズム。

BookmarkMapClass
ブックマークによって保持されているすべての行ハンドルのストレージ ユニット。

要件

ヘッダー: atldb.h

メンバー

インターフェイス メソッド

名前 説明
比較 2 つのブックマークを比較します。
GetRowsAt ブックマークからのオフセットで指定された行から始まる行をフェッチします。
GetRowsByBookmark 指定されたブックマークに一致する行をフェッチします。
Hash 指定されたブックマークのハッシュ値を返します。

データ メンバー

名前 説明
m_rgBookmarks ブックマークの配列。

解説

IRowsetLocateImpl は、IRowsetLocate インターフェイスの OLE DB テンプレート実装です。 IRowsetLocate は、行セットから任意の行をフェッチするために使用されます。 このインターフェイスを実装しない行セットは、sequential 行セットです。 IRowsetLocate が行セットに存在する場合は、列 0 が行のブックマークです。この列を読み取ることで、同じ行への再配置に使用できるブックマーク値を取得できます。

IRowsetLocateImpl は、プロバイダーでブックマークのサポートを実装するために使用されます。 ブックマークは、コンシューマーが特定の行にすばやく戻り、データに高速にアクセスできるようにするためのプレースホルダー (行セットに対するインデックス) です。 どのブックマークが行を一意に識別できるかは、プロバイダーによって決定されます。 IRowsetLocateImpl メソッドを使用すると、ブックマークを比較したり、オフセットによって行をフェッチしたり、ブックマークによって行をフェッチしたり、ブックマークのハッシュ値を返したりすることができます。

行セットで OLE DB ブックマークをサポートするには、行セットをこのクラスから継承します。

ブックマーク サポートの実装について詳しくは、"Visual C++ プログラマー ガイド" の「プロバイダーのブックマーク サポート」と、プラットフォーム SDK の "OLE DB プログラマー リファレンス" の「ブックマーク」をご覧ください。

IRowsetLocateImpl::Compare

2 つのブックマークを比較します。

構文

STDMETHOD (Compare )(HCHAPTER /* hReserved */,
   DBBKMARK cbBookmark1,
   const BYTE* pBookmark1,
   DBBKMARK cbBookmark2,
   const BYTE* pBookmark2,
   DBCOMPARE* pComparison);

パラメーター

"OLE DB プログラマーズ リファレンス" の「IRowsetLocate::Compare」をご覧ください。

解説

いずれのブックマークも、標準の OLE DB で定義された標準ブックマーク (DBBMK_FIRSTDBBMK_LAST、または DBBMK_INVALID) にすることができます。 pComparison で返される値は、2 つのブックマーク間のリレーションシップを示します。

  • DBCOMPARE_LT (cbBookmark1cbBookmark2 より前。)

  • DBCOMPARE_EQ (cbBookmark1cbBookmark2 と等しい。)

  • DBCOMPARE_GT (cbBookmark1cbBookmark2 より後。)

  • 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

指定されたブックマークに一致する 1 つ以上の行をフェッチします。

構文

STDMETHOD (GetRowsByBookmark )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const DBBKMARK rgcbBookmarks[],
   const BYTE* rgpBookmarks,
   HROW rghRows[],
   DBROWSTATUS* rgRowStatus[]);

パラメーター

hReserved
[入力] IRowsetLocate::GetRowsByBookmarkhChapter パラメーターに対応します。

他のパラメーターについては、"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
[入力] IRowsetLocate::HashhChapter パラメーターに対応します。

他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetLocate::Hash」をご覧ください。

IRowsetLocateImpl::m_rgBookmarks

ブックマークの配列。

構文

CAtlArray<DBROWCOUNT> m_rgBookmarks;

関連項目

OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
IRowsetLocate:IRowsetプロバイダーのブックマーク サポート
Bookmarks