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_FIRST
、DBBMK_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_FIRST
、DBBMK_LAST
、または DBBMK_INVALID
) にすることができます。 pComparison
で返される値は、2 つのブックマーク間のリレーションシップを示します。
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
指定されたブックマークに一致する 1 つ以上の行をフェッチします。
構文
STDMETHOD (GetRowsByBookmark )(HCHAPTER /* hReserved */,
DBCOUNTITEM cRows,
const DBBKMARK rgcbBookmarks[],
const BYTE* rgpBookmarks,
HROW rghRows[],
DBROWSTATUS* rgRowStatus[]);
パラメーター
hReserved
[入力] 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
[入力] IRowsetLocate::Hash の hChapter パラメーターに対応します。
他のパラメーターについては、"OLE DB プログラマーズ リファレンス" の「IRowsetLocate::Hash」をご覧ください。
IRowsetLocateImpl::m_rgBookmarks
ブックマークの配列。
構文
CAtlArray<DBROWCOUNT> m_rgBookmarks;
関連項目
OLE DB プロバイダー テンプレートに関するページ
OLE DB プロバイダー テンプレートのアーキテクチャ
IRowsetLocate:IRowsetプロバイダーのブックマーク サポート
Bookmarks