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.
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
chamaIColumnsInfo::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 interfaceICommandWithParameters
, se o provedor der suporte aICommandWithParameters
.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 | No | Modelos de banco de dados OLE | Não |
CDynamicParameterAccessor |
Sim | Sim | Modelos de banco de dados OLE | Não |
CDynamicStringAccessor[A,W] |
Sim | No | Modelos de banco de dados OLE | Não |
CManualAccessor |
Sim | Sim | 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.
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.