Freigeben über


IRowsetLocateImpl-Klasse

Implementiert die OLE DB IRowsetLocate-Schnittstelle , die beliebige Zeilen aus einem Rowset abruft.

Syntax

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>

Parameter

T
Eine von IRowsetLocateImpl.

RowsetInterface
Eine von IRowsetImpl.

RowClass
Die Speichereinheit für die HROW.

MapClass
Die Speichereinheit für alle Zeilenhandles, die vom Anbieter gehalten werden.

BookmarkKeyType
Der Typ der Textmarke, z. B. long oder eine Zeichenfolge. Normale Lesezeichen müssen mindestens zwei Bytes lang sein. (Single-Byte length is reserved for the OLE DB standard bookmarksDBBMK_FIRST, DBBMK_LAST, and DBBMK_INVALID.)

BookmarkType
Der Zuordnungsmechanismus für die Aufrechterhaltung von Textmarken-zu-Daten-Beziehungen.

BookmarkMapClass
Die Speichereinheit für alle Zeilenziehpunkte, die von der Textmarke gehalten werden.

Anforderungen

Header: „atldb.h“

Member

Schnittstellenmethoden

Name Beschreibung
Vergleichen Vergleicht zwei Lesezeichen.
GetRowsAt Ruft Zeilen ab, die mit der Zeile beginnen, die durch einen Offset von einer Textmarke angegeben wurde.
GetRowsByBookmark Ruft die Zeilen ab, die den angegebenen Textmarken entsprechen.
Hash Gibt Hashwerte für die angegebenen Lesezeichen zurück.

Datenelemente

Name Beschreibung
m_rgBookmarks Ein Array von Textmarken.

Hinweise

IRowsetLocateImpl ist die OLE DB-Vorlagenimplementierung der IRowsetLocate-Schnittstelle . IRowsetLocate wird verwendet, um beliebige Zeilen aus einem Rowset abzurufen. Ein Rowset, das diese Schnittstelle nicht implementiert, ist ein sequential Rowset. Wenn IRowsetLocate sie in einem Rowset vorhanden ist, ist Spalte 0 die Textmarke für die Zeilen. Beim Lesen dieser Spalte wird ein Textmarkenwert abgerufen, der zum Ändern der Position in derselben Zeile verwendet werden kann.

IRowsetLocateImpl wird verwendet, um die Textmarkenunterstützung in Anbietern zu implementieren. Textmarken sind Platzhalter (Indizes für ein Rowset), mit denen der Verbraucher schnell zu einer Zeile zurückkehren kann, sodass der Schnellzugriff auf Daten ermöglicht wird. Der Anbieter bestimmt, welche Lesezeichen eine Zeile eindeutig identifizieren können. Mithilfe von IRowsetLocateImpl Methoden können Sie Lesezeichen vergleichen, Zeilen nach Offset abrufen, Zeilen nach Textmarke abrufen und Hashwerte für Textmarken zurückgeben.

Um OLE DB-Lesezeichen in einem Rowset zu unterstützen, erben Sie das Rowset von dieser Klasse.

Informationen zur Implementierung der Textmarkenunterstützung finden Sie unter Anbieterunterstützung für Lesezeichen im Visual C++-Programmierhandbuch und textmarken in der OLE DB-Programmierreferenz im Platform SDK.

IRowsetLocateImpl::Compare

Vergleicht zwei Lesezeichen.

Syntax

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

Parameter

Siehe "IRowsetLocate::Compare " in der OLE DB-Programmierreferenz.

Hinweise

Eine der Textmarken kann ein standardmäßiges OLE DB-definiertes Standardlesezeichen (DBBMK_FIRST, DBBMK_LASToder DBBMK_INVALID) sein. Der zurückgegebene pComparison Wert gibt die Beziehung zwischen den beiden Textmarken an:

  • DBCOMPARE_LT (cbBookmark1 ist vor cbBookmark2.)

  • DBCOMPARE_EQ (cbBookmark1 ist gleich cbBookmark2.)

  • DBCOMPARE_GT (cbBookmark1 ist nach cbBookmark2.)

  • DBCOMPARE_NE (Die Textmarken sind gleich und nicht sortiert.)

  • DBCOMPARE_NOTCOMPARABLE (Die Lesezeichen können nicht verglichen werden.)

IRowsetLocateImpl::GetRowsAt

Ruft Zeilen ab, die mit der Zeile beginnen, die durch einen Offset von einer Textmarke angegeben wurde.

Syntax

STDMETHOD (GetRowsAt )(HWATCHREGION /* hReserved1 */,
   HCHAPTER hReserved2,
   DBBKMARK cbBookmark,
   const BYTE* pBookmark,
   DBROWOFFSET lRowsOffset,
   DBROWCOUNT cRows,
   DBCOUNTITEM* pcRowsObtained,
   HROW** prghRows);

Parameter

Siehe IRowsetLocate::GetRowsAt in der OLE DB-Programmierreferenz.

Hinweise

Um stattdessen von der Cursorposition abzurufen, verwenden Sie "IRowset::GetRowsAt".

IRowsetLocateImpl::GetRowsAt ändert die Cursorposition nicht.

IRowsetLocateImpl::GetRowsByBookmark

Ruft eine oder mehrere Zeilen ab, die den angegebenen Textmarken entsprechen.

Syntax

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

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter " IRowsetLocate::GetRowsByBookmark".

Weitere Parameter finden Sie unter "IRowsetLocate::GetRowsByBookmark " in der OLE DB-Programmierreferenz.

Hinweise

Die Textmarke kann ein Wert sein, den Sie definieren, oder ein OLE DB-Standardlesezeichen (DBBMK_FIRST oder DBBMK_LAST). Ändert die Cursorposition nicht.

IRowsetLocateImpl::Hash

Gibt Hashwerte für die angegebenen Lesezeichen zurück.

Syntax

STDMETHOD (Hash )(HCHAPTER /* hReserved */,
   DBBKMARK cbBookmarks,
   const DBBKMARK* rgcbBookmarks[],
   const BYTE* rgpBookmarks[],
   DBHASHVALUE rgHashValues[],
   DBROWSTATUS rgBookmarkStatus[]);

Parameter

hReserved
[in] Entspricht dem hChapter-Parameter " IRowsetLocate::Hash".

Weitere Parameter finden Sie unter "IRowsetLocate::Hash " in der OLE DB-Programmierreferenz.

IRowsetLocateImpl::m_rgBookmarks

Ein Array von Textmarken.

Syntax

CAtlArray<DBROWCOUNT> m_rgBookmarks;

Siehe auch

OLE DB-Anbietervorlagen
Architektur von OLE DB-Anbietervorlagen
IRowsetLocate:IRowset-Anbieterunterstützungfür Lesezeichen
Bookmarks