Partilhar via


Classe IRowsetLocateImpl

Implementa a interface IRowsetLocate do OLE DB, que busca linhas arbitrárias de um conjunto de linhas.

Sintaxe

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
Uma classe derivada de IRowsetLocateImpl.

RowsetInterface
Uma classe derivada de IRowsetImpl.

RowClass
A unidade de armazenamento do HROW.

MapClass
A unidade de armazenamento para todos os identificadores de linha mantidos pelo provedor.

BookmarkKeyType
O tipo do indicador, como um LONG ou uma cadeia de caracteres. Indicadores comuns precisam ter um comprimento de pelo menos dois bytes. (O comprimento de byte único é reservado para os indicadores padrãoDBBMK_FIRST OLE DB, DBBMK_LAST e DBBMK_INVALID.)

BookmarkType
O mecanismo de mapeamento para manter relações de indicadores para dados.

BookmarkMapClass
A unidade de armazenamento para todos os identificadores de linha mantidos pelo indicador.

Requisitos

Cabeçalho: atldb.h

Membros

Métodos de interface

Nome Descrição
Comparar Compara dois indicadores.
GetRowsAt Busca linhas, iniciando com a linha especificada por um deslocamento de um indicador.
GetRowsByBookmark Busca as linhas que correspondem aos indicadores especificados.
Hash Retorna valores de hash para os indicadores especificados.

Membros de dados

Nome Descrição
m_rgBookmarks Uma matriz de indicadores.

Comentários

IRowsetLocateImpl é a implementação de Modelos OLE DB da interface IRowsetLocate. IRowsetLocate é usado para buscar linhas arbitrárias de um conjunto de linhas. Um conjunto de linhas que não implementa essa interface é um conjunto de linhas sequential. Quando IRowsetLocate estiver presente em um conjunto de linhas, a coluna 0 será o indicador para as linhas; a leitura dessa coluna obterá um valor de indicador que poderá ser usado para reposicionar para a mesma linha.

IRowsetLocateImpl é usado para implementar o suporte a indicadores em provedores. Os indicadores são espaços reservados (índices em um conjunto de linhas) que permitem que o consumidor retorne rapidamente a uma linha, permitindo acesso de alta velocidade aos dados. O provedor determina quais indicadores podem identificar exclusivamente uma linha. Usando métodos IRowsetLocateImpl, você pode comparar indicadores, buscar linhas por deslocamento, buscar linhas por indicador e retornar valores de hash para indicadores.

Para dar suporte a indicadores OLE DB em um conjunto de linhas, faça o conjunto de linhas herdar dessa classe.

Para obter informações sobre como implementar o suporte a indicadores, confira Suporte do provedor a indicadores no Guia do Programador do Visual C++ e Indicadores na Referência de programador do OLE DB no SDK da Plataforma.

IRowsetLocateImpl::Compare

Compara dois indicadores.

Sintaxe

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

Parâmetros

Confira IRowsetLocate::Compare na Referência do programador OLE DB.

Comentários

Qualquer um dos indicadores pode ser um indicador padrão definido pelo OLE DB (DBBMK_FIRST, DBBMK_LAST ou DBBMK_INVALID). O valor retornado em pComparison indica a relação entre os dois indicadores:

  • DBCOMPARE_LT (cbBookmark1 é antes de cbBookmark2.)

  • DBCOMPARE_EQ (cbBookmark1 é igual a cbBookmark2.)

  • DBCOMPARE_LT (cbBookmark1 é após cbBookmark2.)

  • DBCOMPARE_NE (os indicadores são iguais e não são ordenados.)

  • DBCOMPARE_NOTCOMPARABLE (os indicadores não podem ser comparados.)

IRowsetLocateImpl::GetRowsAt

Busca linhas, iniciando com a linha especificada por um deslocamento de um indicador.

Sintaxe

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

Parâmetros

Confira IRowsetLocate::GetRowsAt na Referência do programador OLE DB.

Comentários

Para buscar a partir da posição do cursor, use IRowset::GetRowsAt.

IRowsetLocateImpl::GetRowsAt não altera a posição do cursor.

IRowsetLocateImpl::GetRowsByBookmark

Busca uma ou mais linhas que correspondem aos indicadores especificados.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter para IRowsetLocate::GetRowsByBookmark.

Para outros parâmetros, confira IRowsetLocate::GetRowsByBookmark na Referência do Programador OLE DB.

Comentários

O indicador pode ser um valor que você define ou um indicador padrão OLE DB (DBBMK_FIRST ou DBBMK_LAST). Não altera a posição do cursor.

IRowsetLocateImpl::Hash

Retorna valores de hash para os indicadores especificados.

Sintaxe

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

Parâmetros

hReserved
[in] Corresponde ao parâmetro hChapter para IRowsetLocate::Hash.

Para outros parâmetros, confira IRowsetLocate::Hash na Referência do Programador OLE DB.

IRowsetLocateImpl::m_rgBookmarks

Uma matriz de indicadores.

Sintaxe

CAtlArray<DBROWCOUNT> m_rgBookmarks;

Confira também

Modelos de Provedor OLE DB
Arquitetura de modelo do provedor do OLE DB
IRowsetLocate:IRowsetSuporte do provedor para indicadores
Indicadores