Determinar que tipo de acessador para uso
Você pode determinar os tipos de dados em um conjunto de linhas em tempo de compilação ou em tempo de execução.
Se você precisar determinar os tipos de dados em tempo de compilação, use um acessador estático (como CAccessor).Você pode determinar os tipos de dados manualmente ou usando o ATL OLE DB consumidor assistente.
Se você precisar determinar os tipos de dados em tempo de execução, use um dinâmico (CDynamicAccessor ou seus filhos) ou o acessador manual (CManualAccessor).Nesses casos, você pode chamar GetColumnInfo no conjunto de linhas para retornar informações de ligação de coluna, do qual você pode determinar os tipos.
A tabela a seguir lista os tipos de acessadores fornecidos nos modelos de consumidor.Cada acessador tem vantagens e desvantagens.Dependendo da situação, um tipo de acessador deve atender às suas necessidades.
Classe de acessador |
Associação |
Parâmetro |
Comment |
---|---|---|---|
CAccessor |
Criar um registro de usuário com COLUMN_ENTRY macros.As macros ligar um membro de dados no registro para o acessador.Quando é criado o conjunto de linhas, colunas não podem ser desligadas. |
Sim, usando um PARAM_MAP entrada de macro.Parâmetros acoplado uma vez, não podem ser desligados. |
Acessador mais rápido devido a pequena quantidade de código. |
CDynamicAccessor |
Automático. |
Não. |
Útil se você não souber o tipo de dados em um conjunto de linhas. |
CDynamicParameterAccessor |
Automático, mas pode ser substituído. |
Sim, se o provedor oferece suporte a ICommandWithParameters.Parâmetros vinculados automaticamente. |
Mais lento do que CDynamicAccessor , mas é útil para chamar procedimentos armazenados genéricos. |
CDynamicStringAccessor [um, W] |
Automático. |
Não. |
Recupera dados acessados do armazenamento de dados como dados de cadeia de caracteres. |
CManualAccessor |
Manual usando AddBindEntry. |
Manualmente usando AddParameterEntry. |
Muito rápida; parâmetros e colunas ligados somente uma vez.Determine o tipo de dados para usar.(Consulte DBVIEWER exemplo para obter um exemplo.) Requer mais código que CDynamicAccessor ou CAccessor.É mais como chamar diretamente o banco de dados OLE. |
CXMLAccessor |
Automático. |
Não. |
Recupera dados acessados do armazenamento de dados como dados de seqüência de caracteres e formata dados marcados como XML. |