Compartilhar via


Registros de usuário

Para usar um acessador estático (isto é, um acessador derivado de CAccessor), o consumidor deve ter um registro de usuário.O registro de usuário é uma classe C++ que contém elementos de dados para o identificador de entrada ou saída.O ATL OLE DB consumidor assistente gera um registro de usuário para o consumidor.Você pode adicionar métodos para o registro de usuário para tarefas opcionais, como manipulação de comandos.

O código a seguir mostra um registro de exemplo que controla comandos.No registro do usuário, BEGIN_COLUMN_MAP representa um conjunto de linhas de dados passado para o consumidor de um provedor. BEGIN_PARAM_MAP representa um conjunto de parâmetros de comando. Este exemplo usa um CCommand classe para lidar com os parâmetros de comando.Os membros de dados nas entradas de MAP representam deslocamentos em um bloco contíguo de memória para cada instância da classe.The COLUMN_ENTRY macros correspondem do PROVIDER_COLUMN_ENTRY macros no lado do provedor.

Para obter mais informações sobre o COLUMN_MAP and PARAM_MAP macros, consulte Macros de modelos OLE DB consumidor.

class CArtists
{
public:
// Data Elements
   CHAR m_szFirstName[20];
   CHAR m_szLastName[30];
   short m_nAge;
 
// Column binding map
BEGIN_COLUMN_MAP(CArtists)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
   COLUMN_ENTRY(3, m_nAge)
END_COLUMN_MAP()
 
// Parameter binding map
BEGIN_PARAM_MAP(CArtists)
   COLUMN_ENTRY(1, m_nAge)
END_PARAM_MAP()
};

Registros de usuários geradas pelo Assistente

Se você usar a ATL OLE DB consumidor assistente para gerar um consumidor, você tem a opção de usar modelos OLE DB ou atributos de BD OLE.O código gerado é diferente em cada caso.Para obter mais informações sobre esse código, consulte Classes geradas pelo Assistente do consumidor.

Suporte a registro usuário para acessos múltiplos

Para obter uma discussão detalhada sobre os cenários em que você precisa usar acessadores vários, consulte Usando vários acessos em um conjunto de linhas.

O exemplo a seguir mostra o registro do usuário modificado para dar suporte a acessadores vários no conjunto de linhas.Em vez de BEGIN_COLUMN_MAP e END_COLUMN_MAP, ele usa BEGIN_ACCESSOR_MAP and BEGIN_ACCESSOR cada acessador.The BEGIN_ACCESSOR macro Especifica o número de acessador (deslocamento de zero) e se o acessador é um autoaccessor. Autoaccessors telefonar GetData para recuperar dados automaticamente em uma telefonar para MoveNext.Acessadores nonautomatic exigem que você explicitamente recuperar os dados.Use um acessador nonautomatic se estiver vinculando a um campo de dados grande (como uma imagem de bitmap) que você talvez não queira recuperar para todos os registros.

class CMultiArtists
{
public:
// Data Elements
   CHAR m_szFirstName[20];
   CHAR m_szLastName[30];
   short m_nAge;
 
// Column binding map
BEGIN_ACCESSOR_MAP(CMultiArtists, 2)
   BEGIN_ACCESSOR(0, true)    // true specifies an auto accessor
    COLUMN_ENTRY(1, m_szFirstName)
    COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false)   // false specifies a manual accessor
    COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()
};

Consulte também

Conceitos

OLE DB consumidor modelos (C++)