Compartilhar via


Registros de usuário

Para usar um acessador estático (isto é, um acessador derivada 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 amostra que lida com os comandos. No registro do usuário, BEGIN_COLUMN_MAP representa um conjunto de linhas de dados passado para o consumidor do provedor. BEGIN_PARAM_MAPrepresenta um conjunto de parâmetros de comando. Este exemplo usa um CCommand classe para manipular os parâmetros de comando. Os membros de dados nas entradas de mapa representam deslocamentos em um bloco contíguo de memória para cada instância da classe. O COLUMN_ENTRY macros correspondem do PROVIDER_COLUMN_ENTRY macros no lado do provedor.

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

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ário gerada pelo Assistente

Se você usar a ATL OLE DB consumidor Wizard para gerar um consumidor, você tem a opção de usar modelos OLE DB ou atributos do OLE DB. The generated code is different in each case. Para obter mais informações sobre esse código, consulte Classes de Consumer Wizard-Generated.

Suporte de registro de usuário para vários acessadores

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

O exemplo a seguir mostra o registro de usuário modificado para oferecer suporte a vários acessadores no conjunto de linhas. Em vez de BEGIN_COLUMN_MAP e END_COLUMN_MAP, ele usa BEGIN_ACCESSOR_MAP e BEGIN_ACCESSOR para cada acessador. O BEGIN_ACCESSOR macro Especifica o número de assessor (deslocamento a partir do zero) e se o acessador é um autoaccessor. Chamada de Autoaccessors GetData para recuperar dados automaticamente em uma chamada para MoveNext. Nonautomatic acessadores exigem que você explicitamente recuperar os dados. Se você estiver vinculando a um campo de dados grandes (como uma imagem de bitmap) que você talvez não queira recuperar para cada registro, use um acessador de nonautomatic.

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

Modelos do OLE DB consumidor (C++)