Compartilhar via


Acessadores e conjuntos de linhas

Para definir e recuperar dados, os Modelos OLE DB usam um acessador e um conjunto de linhas por meio da classe CAccessorRowset. Essa classe pode lidar com vários acessadores de diferentes tipos.

Tipos de acessador

Todos os acessadores derivam do CAccessorBase. CAccessorBase fornece associação de parâmetro e de coluna.

A figura a seguir mostra os tipos de acessador.

Diagram that shows the relationships between Accessor types.
Classe do acessador

  • Caccessor Use esse acessador quando souber a estrutura da origem do banco de dados em tempo de design. CAccessor associa estaticamente um registro de banco de dados, que contém o buffer, para a fonte de dados.

  • Cdynamicaccessor Use esse acessador quando não souber a estrutura do banco de dados em tempo de design. CDynamicAccessor chama IColumnsInfo::GetColumnInfo para obter as informações da coluna de banco de dados. Ele cria e gerencia um acessador e o buffer.

  • CDynamicParameterAccessor Use esse acessador para lidar com tipos de comando desconhecidos. Quando você prepara os comandos, CDynamicParameterAccessor pode obter informações de parâmetro da interface ICommandWithParameters, se o provedor der suporte a ICommandWithParameters.

  • CDynamicStringAccessor, CDynamicStringAccessorA e CDynamicStringAccessorW Use essas classes quando não tiver conhecimento do esquema de banco de dados. CDynamicStringAccessorA recupera dados como cadeias de caracteres ANSI; CDynamicStringAccessorW recupera dados como cadeias de caracteres Unicode.

  • Cmanualaccessor Com essa classe, você pode usar os tipos de dados desejados se o provedor puder converter o tipo. Ela manipula colunas de resultado e parâmetros de comando.

A tabela a seguir resume o suporte nos tipos de acessador de modelo OLE DB.

Tipo de acessador Dinâmico Manipula parâmetros Buffer Vários acessadores
CAccessor Não Sim Usuário Sim
CDynamicAccessor Sim Não Modelos de banco de dados OLE Não
CDynamicParameterAccessor Sim Yes Modelos de banco de dados OLE Não
CDynamicStringAccessor[A,W] Sim Não Modelos de banco de dados OLE Não
CManualAccessor Sim Yes Usuário Sim

Tipos de conjunto de linhas

Os modelos OLE DB dão suporte a três tipos de conjuntos de linhas (consulte a figura anterior): conjuntos de linhas únicos (implementados pelo CRowset), conjuntos de linhas em massa (implementados por CBulkRowset) e conjuntos de linhas de matriz (implementados por CArrayRowset). Conjuntos de linhas individuais buscam um identificador de linha única quando MoveNext é chamado. Conjuntos de linhas em massa podem buscar vários identificadores de linha. Conjuntos de linhas de matriz são conjuntos de linhas que podem ser acessados usando a sintaxe da matriz.

A figura a seguir mostra os tipos de conjunto de linhas.

Diagram that shows the relationships between Rowset types.
Classes do conjunto de linhas

Os conjuntos de linhas de esquema não acessam dados no armazenamento de dados, mas acessam informações sobre o armazenamento de dados, chamados de metadados. Conjuntos de linhas de esquema normalmente são usados em situações em que a estrutura do banco de dados não é conhecida em tempo de compilação e deve ser obtida em tempo de execução.

Confira também

Modelos de consumidor OLE DB