Condividi tramite


Classe IRowsetLocateImpl

Implementa l'interfaccia OLE DB IRowsetLocate , che recupera righe arbitrarie da un set di righe.

Sintassi

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>

Parametri

T
Classe derivata da IRowsetLocateImpl.

RowsetInterface
Classe derivata da IRowsetImpl.

RowClass
Unità di archiviazione per .HROW

MapClass
Unità di archiviazione per tutti gli handle di riga mantenuti dal provider.

BookmarkKeyType
Tipo del segnalibro, ad esempio long o stringa. I segnalibri ordinari devono avere una lunghezza di almeno due byte. La lunghezza a byte singolo è riservata ai segnalibriDBBMK_FIRST standard OLE DB, DBBMK_LASTe DBBMK_INVALID.

BookmarkType
Meccanismo di mapping per la gestione delle relazioni tra segnalibri e dati.

BookmarkMapClass
Unità di archiviazione per tutti gli handle di riga contenuti nel segnalibro.

Requisiti

Intestazione: atldb.h

Membri

Metodi di interfaccia

Nome Descrizione
Confronta Confronta due segnalibri.
GetRowsAt Recupera le righe che iniziano con la riga specificata da un offset da un segnalibro.
GetRowsByBookmark Recupera le righe che corrispondono ai segnalibri specificati.
Hash Restituisce i valori hash per i segnalibri specificati.

Membri dei dati

Nome Descrizione
m_rgBookmarks Matrice di segnalibri.

Osservazioni:

IRowsetLocateImpl è l'implementazione dei modelli OLE DB dell'interfaccia IRowsetLocate . IRowsetLocate viene utilizzato per recuperare righe arbitrarie da un set di righe. Un set di righe che non implementa questa interfaccia è un sequential set di righe. Quando IRowsetLocate è presente in un set di righe, la colonna 0 è il segnalibro per le righe. La lettura di questa colonna otterrà un valore di segnalibro che può essere utilizzato per riposizionare la stessa riga.

IRowsetLocateImpl viene usato per implementare il supporto dei segnalibri nei provider. I segnalibri sono segnaposto (indici in un set di righe) che consentono al consumer di tornare rapidamente a una riga, consentendo l'accesso ad alta velocità ai dati. Il provider determina quali segnalibri possono identificare in modo univoco una riga. Usando IRowsetLocateImpl i metodi, è possibile confrontare segnalibri, recuperare righe per offset, recuperare righe per segnalibro e restituire valori hash per i segnalibri.

Per supportare i segnalibri OLE DB in un set di righe, impostare l'ereditarietà del set di righe da questa classe.

Per informazioni sull'implementazione del supporto dei segnalibri, vedere Supporto del provider per i segnalibri nella Guida e nei segnalibri del programmatore di Visual C++ nella Guida per programmatori OLE DB in Platform SDK.

IRowsetLocateImpl::Compare

Confronta due segnalibri.

Sintassi

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

Parametri

Vedere IRowsetLocate::Compare nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Uno dei segnalibri può essere un segnalibro standard definito da OLE DB standard (DBBMK_FIRST, DBBMK_LASTo DBBMK_INVALID). Il valore restituito in pComparison indica la relazione tra i due segnalibri:

  • DBCOMPARE_LT (cbBookmark1 è precedente cbBookmark2a .)

  • DBCOMPARE_EQ (cbBookmark1 è uguale a cbBookmark2.)

  • DBCOMPARE_GT (cbBookmark1 è dopo cbBookmark2.)

  • DBCOMPARE_NE (i segnalibri sono uguali e non ordinati).

  • DBCOMPARE_NOTCOMPARABLE (Impossibile confrontare i segnalibri).

IRowsetLocateImpl::GetRowsAt

Recupera le righe che iniziano con la riga specificata da un offset da un segnalibro.

Sintassi

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

Parametri

Vedere IRowsetLocate::GetRowsAt nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Per recuperare dalla posizione del cursore, usare invece IRowset::GetRowsAt.

IRowsetLocateImpl::GetRowsAt non modifica la posizione del cursore.

IRowsetLocateImpl::GetRowsByBookmark

Recupera una o più righe corrispondenti ai segnalibri specificati.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter a IRowsetLocate::GetRowsByBookmark.

Per altri parametri, vedere IRowsetLocate::GetRowsByBookmark nella guida di riferimento per programmatori OLE DB.

Osservazioni:

Il segnalibro può essere un valore definito o un segnalibro standard OLE DB (DBBMK_FIRST o DBBMK_LAST). Non modifica la posizione del cursore.

IRowsetLocateImpl::Hash

Restituisce i valori hash per i segnalibri specificati.

Sintassi

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

Parametri

hReserved
[in] Corrisponde al parametro hChapter a IRowsetLocate::Hash.

Per altri parametri, vedere IRowsetLocate::Hash nella guida di riferimento per programmatori OLE DB.

IRowsetLocateImpl::m_rgBookmarks

Matrice di segnalibri.

Sintassi

CAtlArray<DBROWCOUNT> m_rgBookmarks;

Vedi anche

Modelli di provider OLE DB
Architettura dei modelli di provider OLE DB
Supporto del provider IRowsetLocate:IRowsetper i segnalibri
Bookmarks