Partager via


IRowsetLocateImpl, classe

Implémente l’interface OLE DB IRowsetLocate , qui extrait des lignes arbitraires à partir d’un ensemble de lignes.

Syntaxe

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>

Paramètres

T
Classe dérivée de IRowsetLocateImpl.

RowsetInterface
Classe dérivée de IRowsetImpl.

RowClass
Unité de stockage pour le HROW.

MapClass
Unité de stockage pour tous les handles de ligne détenus par le fournisseur.

BookmarkKeyType
Type du signet, tel qu’un long ou une chaîne. Les signets ordinaires doivent avoir une longueur d’au moins deux octets. (La longueur d’un octet est réservée aux signetsDBBMK_FIRST standard OLE DB, DBBMK_LASTet DBBMK_INVALID.)

BookmarkType
Mécanisme de mappage pour la gestion des relations entre signets et données.

BookmarkMapClass
Unité de stockage pour tous les handles de ligne détenus par le signet.

Spécifications

En-tête : atldb.h

Membres

Méthodes d'interface

Nom Description
Compare Compare deux signets.
GetRowsAt Récupère les lignes commençant par la ligne spécifiée par un décalage d’un signet.
GetRowsByBookmark Récupère les lignes qui correspondent aux signets spécifiés.
Hash Retourne des valeurs de hachage pour les signets spécifiés.

Données membres

Nom Description
m_rgBookmarks Tableau de signets.

Notes

IRowsetLocateImpl est l’implémentation de modèles OLE DB de l’interface IRowsetLocate . IRowsetLocate est utilisé pour extraire des lignes arbitraires à partir d’un ensemble de lignes. Un ensemble de lignes qui n’implémente pas cette interface est un sequential ensemble de lignes. Lorsqu’elle IRowsetLocate est présente sur un ensemble de lignes, la colonne 0 est le signet des lignes. La lecture de cette colonne obtient une valeur de signet qui peut être utilisée pour se repositionner sur la même ligne.

IRowsetLocateImpl est utilisé pour implémenter la prise en charge des signets dans les fournisseurs. Les signets sont des espaces réservés (index sur un ensemble de lignes) qui permettent au consommateur de revenir rapidement à une ligne, ce qui permet un accès à haute vitesse aux données. Le fournisseur détermine quels signets peuvent identifier de manière unique une ligne. À l’aide IRowsetLocateImpl de méthodes, vous pouvez comparer des signets, extraire des lignes par décalage, extraire des lignes par signet et retourner des valeurs de hachage pour les signets.

Pour prendre en charge les signets OLE DB dans un ensemble de lignes, faites en sorte que l’ensemble de lignes hérite de cette classe.

Pour plus d’informations sur l’implémentation de la prise en charge des signets, consultez La prise en charge du fournisseur pour les signets dans le Guide et les signets du programmeur Visual C++ dans la référence du programmeur OLE DB dans le Kit de développement logiciel (SDK) de plateforme.

IRowsetLocateImpl::Compare

Compare deux signets.

Syntaxe

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

Paramètres

Consultez IRowsetLocate ::Compare dans la référence du programmeur OLE DB.

Notes

L’un des signets peut être un signet standard défini par OLE DB (DBBMK_FIRST, DBBMK_LASTou DBBMK_INVALID). La valeur retournée indique pComparison la relation entre les deux signets :

  • DBCOMPARE_LT (cbBookmark1 est avant cbBookmark2.)

  • DBCOMPARE_EQ (cbBookmark1 est égal à cbBookmark2.)

  • DBCOMPARE_GT (cbBookmark1 est après cbBookmark2.)

  • DBCOMPARE_NE (les signets sont égaux et non ordonnés.)

  • DBCOMPARE_NOTCOMPARABLE (les signets ne peuvent pas être comparés.)

IRowsetLocateImpl::GetRowsAt

Récupère les lignes commençant par la ligne spécifiée par un décalage d’un signet.

Syntaxe

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

Paramètres

Consultez IRowsetLocate ::GetRowsAt dans la référence du programmeur OLE DB.

Notes

Pour extraire à la place la position du curseur, utilisez IRowset ::GetRowsAt.

IRowsetLocateImpl::GetRowsAt ne modifie pas la position du curseur.

IRowsetLocateImpl::GetRowsByBookmark

Récupère une ou plusieurs lignes qui correspondent aux signets spécifiés.

Syntaxe

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

Paramètres

hReserved
[in] Correspond au paramètre hChapter à IRowsetLocate ::GetRowsByBookmark.

Pour d’autres paramètres, consultez IRowsetLocate ::GetRowsByBookmark dans la référence du programmeur OLE DB.

Notes

Le signet peut être une valeur que vous définissez ou un signet standard OLE DB (DBBMK_FIRST ou DBBMK_LAST). Ne modifie pas la position du curseur.

IRowsetLocateImpl::Hash

Retourne des valeurs de hachage pour les signets spécifiés.

Syntaxe

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

Paramètres

hReserved
[in] Correspond au paramètre hChapter à IRowsetLocate ::Hash.

Pour d’autres paramètres, consultez IRowsetLocate ::Hash dans la référence du programmeur OLE DB.

IRowsetLocateImpl::m_rgBookmarks

Tableau de signets.

Syntaxe

CAtlArray<DBROWCOUNT> m_rgBookmarks;

Voir aussi

Modèles du fournisseur OLE DB
Architecture des modèles du fournisseur OLE DB
Prise en charge du fournisseur IRowsetLocate :IRowsetpour les signets
Signets