Compartir vía


IRowsetLocateImpl (Clase)

Implementa la interfaz IRowsetLocate de OLE DB, que captura filas arbitrarias de un conjunto de filas.

Sintaxis

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>

Parámetros

T
Una clase derivada de IRowsetLocateImpl.

RowsetInterface
Una clase derivada de IRowsetImpl.

RowClass
Unidad de almacenamiento de HROW.

MapClass
La unidad de almacenamiento para todos los identificadores de fila que mantiene el proveedor.

BookmarkKeyType
Tipo del marcador, como LONG o una cadena. Los marcadores normales deben tener una longitud de al menos dos bytes. (La longitud de un byte está reservada para los marcadores estándar de OLE DB DBBMK_FIRST, DBBMK_LAST y DBBMK_INVALID).

BookmarkType
Mecanismo de asignación para mantener relaciones de marcador a datos.

BookmarkMapClass
Unidad de almacenamiento para todos los identificadores de fila mantenidos por el marcador.

Requisitos

Encabezado: atldb.h

Miembros

Métodos de interfaz

Nombre Descripción
Comparar Compara dos marcadores.
GetRowsAt Captura filas a partir de la fila especificada por un desplazamiento del marcador.
GetRowsByBookmark Captura las filas que coinciden con los marcadores especificados.
Hash Devuelve valores hash para los marcadores especificados.

Miembros de datos

Nombre Descripción
m_rgBookmarks Matriz de marcadores.

Comentarios

IRowsetLocateImpl es la implementación de plantillas OLE DB de la interfaz IRowsetLocate. IRowsetLocate se usa para capturar filas arbitrarias de un conjunto de filas. Un conjunto de filas que no implementa esta interfaz es un conjunto de filas sequential. Cuando IRowsetLocate está presente en un conjunto de filas, la columna 0 es el marcador de las filas; al leer esta columna se obtiene un valor de marcador que se puede usar para cambiar la posición a la misma fila.

IRowsetLocateImpl se usa para implementar la compatibilidad con marcadores en proveedores. Los marcadores son marcadores de posición (índices en un conjunto de filas) que permiten al consumidor volver rápidamente a una fila, lo que permite el acceso de alta velocidad a los datos. El proveedor determina qué marcadores pueden identificar de forma exclusiva una fila. Mediante métodos IRowsetLocateImpl, puede comparar marcadores, capturar filas por desplazamiento, capturar filas por marcador y devolver valores hash para marcadores.

Para admitir marcadores OLE DB en un conjunto de filas, haga que el conjunto de filas herede de esta clase.

Para obtener información sobre la implementación de la compatibilidad con marcadores, vea Compatibilidad del proveedor con los marcadores en la Guía del programador de Visual C++ y Marcadores en la Referencia del programador de OLE DB en el SDK de Platform.

IRowsetLocateImpl::Compare

Compara dos marcadores.

Sintaxis

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

Parámetros

Vea IRowsetLocate::Compare en la Referencia del programador de OLE DB.

Comentarios

Cualquiera de los marcadores puede ser un marcador estándar definido por OLE DB (DBBMK_FIRST, DBBMK_LAST o DBBMK_INVALID). El valor devuelto en pComparison indica la relación entre los dos marcadores:

  • DBCOMPARE_LT (cbBookmark1 es anterior a cbBookmark2).

  • DBCOMPARE_EQ (cbBookmark1 es igual a cbBookmark2).

  • DBCOMPARE_GT (cbBookmark1 es posterior a cbBookmark2).

  • DBCOMPARE_NE (los marcadores son iguales y no están ordenados).

  • DBCOMPARE_NOTCOMPARABLE (no se pueden comparar los marcadores).

IRowsetLocateImpl::GetRowsAt

Captura filas a partir de la fila especificada por un desplazamiento del marcador.

Sintaxis

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

Parámetros

Vea IRowsetLocate::GetRowsAt en la Referencia del programador de OLE DB.

Comentarios

Para capturar desde la posición del cursor, use IRowset::GetRowsAt.

IRowsetLocateImpl::GetRowsAt no cambia la posición del cursor.

IRowsetLocateImpl::GetRowsByBookmark

Captura una o varias filas que coinciden con los marcadores especificados.

Sintaxis

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

Parámetros

hReserved
[in] Corresponde al parámetro hChapter a IRowsetLocate::GetRowsByBookmark.

Para ver otros parámetros, vea IRowsetLocate::GetRowsByBookmark en la Referencia del programador de OLE DB.

Comentarios

El marcador puede ser un valor que defina o un marcador estándar de OLE DB (DBBMK_FIRST o DBBMK_LAST). No cambia la posición del cursor.

IRowsetLocateImpl::Hash

Devuelve valores hash para los marcadores especificados.

Sintaxis

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

Parámetros

hReserved
[in] Corresponde al parámetro hChapter a IRowsetLocate::Hash.

Para ver otros parámetros, vea IRowsetLocate::Hash en la Referencia del programador de OLE DB.

IRowsetLocateImpl::m_rgBookmarks

Matriz de marcadores.

Sintaxis

CAtlArray<DBROWCOUNT> m_rgBookmarks;

Consulte también

Plantillas de proveedores OLE DB
Arquitectura de plantillas de proveedores OLE DB
IRowsetLocate:IRowsetCompatibilidad del proveedor para marcadores
Marcadores