Macros e funções globais para modelos de consumidor de banco de dados OLE

Os Modelos de Consumidor OLE DB incluem as seguintes macros e funções globais:

Funções globais

Nome Descrição
AtlTraceErrorRecords Despeja informações do Registro de Erro do OLE DB no dispositivo de despejo se um erro é retornado.

Macros de mapa do acessador

Nome Descrição
BEGIN_ACCESSOR Marca o início de uma entrada do acessador.
BEGIN_ACCESSOR_MAP Marca o início de entradas do mapa do acessador.
END_ACCESSOR Marca o término de uma entrada do acessador.
END_ACCESSOR_MAP Marca o término de entradas do mapa do acessador.

Macros de mapa de colunas

Nome Descrição
BEGIN_COLUMN_MAP Marca o início de entradas de mapa de colunas na classe de registro do usuário.
BLOB_ENTRY Usado para associar um BLOB (objeto binário grande).
BLOB_ENTRY_LENGTH Relata o comprimento da coluna de dados do BLOB.
BLOB_ENTRY_LENGTH_STATUS Relata o comprimento e o status da coluna de dados do BLOB.
BLOB_ENTRY_STATUS Relata o status da coluna de dados do BLOB.
BLOB_NAME Usado para associar um objeto binário grande por nome de coluna.
BLOB_NAME_LENGTH Relata o comprimento da coluna de dados do BLOB.
BLOB_NAME_LENGTH_STATUS Relata o comprimento e o status da coluna de dados do BLOB.
BLOB_NAME_STATUS Relata o status da coluna de dados do BLOB.
BOOKMARK_ENTRY Representa uma entrada de indicador no conjunto de linhas. Uma entrada de indicador é um tipo especial de entrada de coluna.
COLUMN_ENTRY Representa uma associação a uma coluna específica no banco de dados.
COLUMN_ENTRY_EX Representa uma associação à coluna específica no banco de dados. Dá suporte a parâmetros type, length, precision, scale e status.
COLUMN_ENTRY_LENGTH Representa uma associação à coluna específica no banco de dados. Dá suporte à variável length.
COLUMN_ENTRY_LENGTH_STATUS Representa uma associação à coluna específica no banco de dados. Dá suporte aos parâmetros status e length.
COLUMN_ENTRY_PS Representa uma associação à coluna específica no banco de dados. Dá suporte aos parâmetros precision e scale.
COLUMN_ENTRY_PS_LENGTH Representa uma associação à coluna específica no banco de dados. Dá suporte à variável length e aos parâmetros precision e scale.
COLUMN_ENTRY_PS_LENGTH_STATUS Representa uma associação à coluna específica no banco de dados. Dá suporte às variáveis status e length e aos parâmetros precision e scale.
COLUMN_ENTRY_PS_STATUS Representa uma associação à coluna específica no banco de dados. Dá suporte à variável status e aos parâmetros precision e scale.
COLUMN_ENTRY_STATUS Representa uma associação à coluna específica no banco de dados. Dá suporte à variável status.
COLUMN_ENTRY_TYPE Representa uma associação a uma coluna específica no banco de dados. Dá suporte ao parâmetro type.
COLUMN_ENTRY_TYPE_SIZE Representa uma associação à coluna específica no banco de dados. Dá suporte aos parâmetros type e size.
COLUMN_NAME Representa uma associação a uma coluna específica no banco de dados por nome.
COLUMN_NAME_EX Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de tipo de dados, tamanho, precisão, escala, comprimento da coluna e status da coluna.
COLUMN_NAME_LENGTH Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de comprimento da coluna.
COLUMN_NAME_LENGTH_STATUS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de status e comprimento da coluna.
COLUMN_NAME_PS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de precisão e escala.
COLUMN_NAME_PS_LENGTH Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de precisão, escala e comprimento da coluna.
COLUMN_NAME_PS_LENGTH_STATUS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de precisão, escala, comprimento da coluna e status da coluna.
COLUMN_NAME_PS_STATUS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de precisão, escala e status da coluna.
COLUMN_NAME_STATUS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de status da coluna.
COLUMN_NAME_TYPE Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de tipo de dados.
COLUMN_NAME_TYPE_PS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de tipo de dados, precisão e escala.
COLUMN_NAME_TYPE_SIZE Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de tipo de dados e tamanho.
COLUMN_NAME_TYPE_STATUS Representa uma associação a uma coluna específica no banco de dados por nome. Dá suporte à especificação de tipo de dados e status da coluna.
END_COLUMN_MAP Marca o final das entradas do mapa de colunas.

Macros de comando

Nome Descrição
DEFINE_COMMAND Especifica o comando que será usado para criar o conjunto de linhas ao usar a classe CCommand. Aceita apenas tipos de cadeia de caracteres que correspondem ao tipo de aplicativo especificado (ANSI ou Unicode). É recomendável que você use DEFINE_COMMAND_EX em vez de DEFINE_COMMAND.
DEFINE_COMMAND_EX Especifica o comando que será usado para criar o conjunto de linhas ao usar a classe CCommand. Dá suporte a aplicativos ANSI e Unicode.

Macros de mapa de parâmetro

Nome Descrição
BEGIN_PARAM_MAP Marca o início de entradas de mapa de parâmetros na classe de registro do usuário.
END_PARAM_MAP Marca o final das entradas do mapa de parâmetros.
SET_PARAM_TYPE Especifica macros COLUMN_ENTRY que seguem a macro SET_PARAM_TYPE como entrada, saída ou entrada/saída.

AtlTraceErrorRecords

Despeja informações do Registro de Erro do OLE DB no dispositivo de despejo se um erro é retornado.

Sintaxe

inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);

Parâmetros

hErr
[in] Um HRESULT retornado por uma função membro do Modelo de Consumidor OLE DB.

Comentários

Se hErr não for S_OK, AtlTraceErrorRecords despejará informações do Registro de Erro OLE DB no dispositivo de despejo (a guia Depurar da janela Saída ou um arquivo). As informações de Registro de Erro, obtidas do provedor, incluem número de linha, origem, descrição, arquivo de ajuda, contexto e GUID para cada entrada de registro de erro. AtlTraceErrorRecords despeja essas informações somente em builds de depuração. Em builds de versão, é um stub vazio otimizado. Para obter mais informações, confira Classe CDBErrorInfo.

BEGIN_ACCESSOR

Marca o início de uma entrada do acessador.

Sintaxe

BEGIN_ACCESSOR(num, bAuto)

Parâmetros

num
[in] O número de deslocamento zero para o acessador neste mapa do acessador.

bAuto
[in] Especifica se esse acessador é um acessador automático ou manual. Se true, o acessador é automático; se false, o acessador é manual. Um acessador automático significa que os dados são buscados para você em operações de movimentação.

Comentários

No caso de vários acessadores em um conjunto de linhas, você precisa especificar BEGIN_ACCESSOR_MAP e usar a macro BEGIN_ACCESSOR para cada acessador individual. A macro BEGIN_ACCESSOR é concluída com a macro END_ACCESSOR. A macro BEGIN_ACCESSOR_MAP é concluída com a macro END_ACCESSOR_MAP.

Exemplo

Confira BEGIN_ACCESSOR_MAP.

BEGIN_ACCESSOR_MAP

Marca o início de entradas do mapa do acessador.

Sintaxe

BEGIN_ACCESSOR_MAP(x, num)

Parâmetros

x
[in] O nome da classe de registro do usuário.

num
[in] O número de acessadores neste mapa do acessador.

Comentários

No caso de vários acessadores em um conjunto de linhas, você precisa especificar BEGIN_ACCESSOR_MAP no início e usar a macro BEGIN_ACCESSOR para cada acessador individual. A macro BEGIN_ACCESSOR é concluída com a macro END_ACCESSOR. O mapa do acessador é concluído com a macro END_ACCESSOR_MAP.

Se você tiver apenas um acessador no registro de usuário, use a macro BEGIN_COLUMN_MAP.

Exemplo

class CArtistsAccessor
{
public:
// Data Elements
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];
   short m_nAge;

// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
   BEGIN_ACCESSOR(0, true)
      COLUMN_ENTRY(1, m_szFirstName)
      COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false) // Not an auto accessor
      COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsAccessor, L" \
   SELECT \
      FirstName, \
      LastName, \
      Age \
      FROM Artists")
};

END_ACCESSOR

Marca o término de uma entrada do acessador.

Sintaxe

END_ACCESSOR()

Comentários

No caso de vários acessadores em um conjunto de linhas, você precisa especificar BEGIN_ACCESSOR_MAP e usar a macro BEGIN_ACCESSOR para cada acessador individual. A macro BEGIN_ACCESSOR é concluída com a macro END_ACCESSOR. A macro BEGIN_ACCESSOR_MAP é concluída com a macro END_ACCESSOR_MAP.

Exemplo

Confira BEGIN_ACCESSOR_MAP.

END_ACCESSOR_MAP

Marca o término de entradas do mapa do acessador.

Sintaxe

END_ACCESSOR_MAP()

Comentários

No caso de vários acessadores em um conjunto de linhas, você precisa especificar BEGIN_ACCESSOR_MAP e usar a macro BEGIN_ACCESSOR para cada acessador individual. A macro BEGIN_ACCESSOR é concluída com a macro END_ACCESSOR. A macro BEGIN_ACCESSOR_MAP é concluída com a macro END_ACCESSOR_MAP.

Exemplo

Confira BEGIN_ACCESSOR_MAP.

BEGIN_COLUMN_MAP

Marca o início de uma entrada de mapa de coluna.

Sintaxe

BEGIN_COLUMN_MAP(x)

Parâmetros

x
[in] O nome da classe de registro do usuário derivada de CAccessor.

Comentários

Essa macro é usada no caso de apenas um acessador em um conjunto de linhas. Se você tiver vários acessadores em um conjunto de linhas, use BEGIN_ACCESSOR_MAP.

A macro BEGIN_COLUMN_MAP é concluída com a macro END_COLUMN_MAP. Essa macro é usada quando há apenas um acessador necessário no registro do usuário.

As colunas correspondem aos campos no conjunto de linhas que você deseja associar.

Exemplo

Aqui está um mapa de parâmetros e uma coluna de exemplo:

BLOB_ENTRY

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande).

Sintaxe

BLOB_ENTRY(nOrdinal, IID, flags, data)

Parâmetros

nOrdinal
[in] O número da coluna.

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

Exemplo

Confira Como posso recuperar um BLOB?.

BLOB_ENTRY_LENGTH

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_ENTRY, exceto que essa macro também obtém o comprimento em bytes da coluna BLOB.

Sintaxe

BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)

Parâmetros

nOrdinal
[in] O número da coluna.

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

length
[out] O comprimento (real) em bytes da coluna BLOB.

Exemplo

Confira Como posso recuperar um BLOB?.

BLOB_ENTRY_LENGTH_STATUS

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_ENTRY, exceto que essa macro também obtém o comprimento e o status da coluna BLOB.

Sintaxe

BLOB_ENTRY_LENGTH_STATUS(
    nOrdinal,
    IID,
    flags,
    data,
    length,
    status )

Parâmetros

nOrdinal
[in] O número da coluna.

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

length
[out] O comprimento (real) em bytes da coluna BLOB.

status
[out] O status da coluna de dados do BLOB.

Exemplo

Confira Como posso recuperar um BLOB?.

BLOB_ENTRY_STATUS

Usado com BEGIN_COLUMN_MAP ou BEGIN_ACCESSOR_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_ENTRY, exceto que essa macro também obtém o status da coluna BLOB.

Sintaxe

BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)

Parâmetros

nOrdinal
[in] O número da coluna.

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

status
[out] O status do campo de BLOB.

Exemplo

Confira Como posso recuperar um BLOB?.

BLOB_NAME

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_ENTRY, exceto que essa macro usa um nome de coluna em vez de um número de coluna.

Sintaxe

BLOB_NAME(pszName, IID, flags, data )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

Exemplo

Confira Como posso recuperar um BLOB?.

BLOB_NAME_LENGTH

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_NAME, exceto que essa macro também obtém o comprimento em bytes da coluna de dados de BLOB.

Sintaxe

BLOB_NAME_LENGTH(pszName, IID, flags, data, length )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

length
[out] O comprimento (real) em bytes da coluna BLOB.

BLOB_NAME_LENGTH_STATUS

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_NAME, exceto que essa macro também obtém o comprimento e o status da coluna de dados de BLOB.

Sintaxe

BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

length
[out] O comprimento (real) em bytes da coluna BLOB.

status
[out] O status do campo de BLOB.

BLOB_NAME_STATUS

Usado com BEGIN_COLUMN_MAP e END_COLUMN_MAP para associar um BLOB (objeto binário grande). Semelhante a BLOB_NAME, exceto que essa macro também obtém o status da coluna de dados de BLOB.

Sintaxe

BLOB_NAME_STATUS(pszName, IID, flags, data, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

IID
[in] GUID de interface, como IDD_ISequentialStream, usado para recuperar o BLOB.

sinalizadores
[in] Sinalizadores do modo de armazenamento, conforme definido pelo modelo de Armazenamento Estruturado OLE (por exemplo, STGM_READ).

data
[in] O membro de dados correspondente no registro de usuário.

status
[out] O status do campo de BLOB.

BOOKMARK_ENTRY

Associa a coluna de indicador.

Sintaxe

BOOKMARK_ENTRY(variable)

Parâmetros

variable
[in] A variável a ser associada à coluna de indicador.

Exemplo

class CArtistsBookmark
{
public:
// Data Elements
   CBookmark<4> m_bookmark;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
   BOOKMARK_ENTRY(m_bookmark)
   COLUMN_ENTRY(1, m_nAge)
   COLUMN_ENTRY(2, m_szFirstName)
   COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()

   void GetRowsetProperties(CDBPropSet* pPropSet)
   {
      pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
   }

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsBookmark, L" \
   SELECT \
      Age, \
      FirstName, \
      LastName \
      FROM Artists")
};

Para obter mais informações, confira Usando indicadores e Classe CBookmark.

COLUMN_ENTRY

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas.

Sintaxe

COLUMN_ENTRY(nOrdinal, data)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

A macro COLUMN_ENTRY é usada nos seguintes locais:

Exemplo

Veja os exemplos nos tópicos de macro, BEGIN_COLUMN_MAP e BEGIN_ACCESSOR_MAP.

COLUMN_ENTRY_EX

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

wType
[in] O tipo de dados.

nLength
[in] O tamanho dos dados em bytes.

nPrecision
[in] A precisão máxima a ser usada ao obter dados e wType é DBTYPE_NUMERIC. Caso contrário, esse parâmetro é ignorado.

nScale
[in] A escala a ser usada ao obter dados e wType é DBTYPE_NUMERIC ou DBTYPE_DECIMAL.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

A macro COLUMN_ENTRY_EX é usada nos seguintes locais:

Exemplo

Confira BOOKMARK_ENTRY.

COLUMN_ENTRY_LENGTH

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_LENGTH(nOrdinal, data, length)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna, começando com um. O indicador corresponde à coluna zero.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

Comentários

Essa macro dá suporte à variável length. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_LENGTH_STATUS

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Use essa macro quando quiser dar suporte às variáveis length e status. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_PS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas.

Sintaxe

COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Permite que você especifique a precisão e a escala da coluna que deseja associar. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_PS_LENGTH

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna, começando com um. O indicador corresponde à coluna zero.

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

Comentários

Permite que você especifique a precisão e a escala da coluna que deseja associar. Essa macro dá suporte à variável length. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_PS_LENGTH_STATUS

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Permite que você especifique a precisão e a escala da coluna que deseja associar. Use essa macro quando quiser dar suporte às variáveis length e status. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_PS_STATUS

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Permite que você especifique a precisão e a escala da coluna que deseja associar. Essa macro dá suporte à variável status. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_STATUS

Representa uma associação no conjunto de linhas à coluna específica no banco de dados.

Sintaxe

COLUMN_ENTRY_STATUS(nOrdinal, data, status)

Parâmetros

Confira DBBINDING na Referência de programador do OLE DB.

nOrdinal
[in] O número da coluna.

data
[in] O membro de dados correspondente no registro de usuário.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Essa macro dá suporte à variável status. Ela é usada das seguintes maneiras:

COLUMN_ENTRY_TYPE

Representa uma associação à coluna específica no banco de dados. Dá suporte ao parâmetro type.

Sintaxe

COLUMN_ENTRY_TYPE (nOrdinal, wType, data)

Parâmetros

nOrdinal
[in] O número da coluna.

wType
[in] Tipo de dados de entrada de coluna.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Essa macro é uma variante especializada da macro COLUMN_ENTRY que fornece um meio de especificar o tipo de dados.

COLUMN_ENTRY_TYPE_SIZE

Representa uma associação à coluna específica no banco de dados. Dá suporte aos parâmetros type e size.

Sintaxe

COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)

Parâmetros

nOrdinal
[in] O número da coluna.

wType
[in] Tipo de dados de entrada de coluna.

nLength
[in] Tamanho da entrada de coluna em bytes.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Essa macro é uma variante especializada da macro COLUMN_ENTRY que fornece um meio de especificar o tipo e o tamanho de dados.

COLUMN_NAME

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_ENTRY, exceto que essa macro usa o nome da coluna em vez do número da coluna.

Sintaxe

COLUMN_NAME(pszName, data)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

As macros COLUMN_NAME_* são usadas nos mesmos locais que COLUMN_ENTRY:

COLUMN_NAME_EX

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também usa tipo de dados, tamanho, precisão, escala, comprimento de coluna e status de coluna.

Sintaxe

COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

wType
[in] O tipo de dados.

nLength
[in] O tamanho dos dados em bytes.

nPrecision
[in] A precisão máxima a ser usada ao obter dados e wType é DBTYPE_NUMERIC. Caso contrário, esse parâmetro é ignorado.

nScale
[in] A escala a ser usada ao obter dados e wType é DBTYPE_NUMERIC ou DBTYPE_DECIMAL.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_LENGTH

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem comprimento de coluna.

Sintaxe

COLUMN_NAME_LENGTH(pszName, data, length)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_LENGTH_STATUS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem comprimento de coluna e status de coluna.

Sintaxe

COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_PS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem precisão e escala.

Sintaxe

COLUMN_NAME_PS(pszName, nPrecision, nScale, data )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_PS_LENGTH

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem precisão, escala e comprimento de coluna.

Sintaxe

COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_PS_LENGTH_STATUS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem precisão, escala, comprimento de coluna e status de coluna.

Sintaxe

COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

length
[in] A variável a ser associada ao comprimento da coluna.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_PS_STATUS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem precisão, escala e status de coluna.

Sintaxe

COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

nPrecision
[in] A precisão máxima da coluna que você deseja associar.

nScale
[in] A escala da coluna que você deseja associar.

data
[in] O membro de dados correspondente no registro de usuário.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_STATUS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem status de coluna.

Sintaxe

COLUMN_NAME_STATUS(pszName, data, status )

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

data
[in] O membro de dados correspondente no registro de usuário.

status
[in] A variável a ser associada ao status da coluna.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_TYPE

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem tipo de dados.

Sintaxe

COLUMN_NAME_TYPE(pszName, wType, data)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

wType
[in] O tipo de dados.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_TYPE_PS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem tipo de dados, precisão e escala.

Sintaxe

COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

wType
[in] O tipo de dados.

nPrecision
[in] A precisão máxima a ser usada ao obter dados e wType é DBTYPE_NUMERIC. Caso contrário, esse parâmetro é ignorado.

nScale
[in] A escala a ser usada ao obter dados e wType é DBTYPE_NUMERIC ou DBTYPE_DECIMAL.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_TYPE_SIZE

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem tamanho e tipo de dados.

Sintaxe

COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

wType
[in] O tipo de dados.

nLength
[in] O tamanho dos dados em bytes.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

COLUMN_NAME_TYPE_STATUS

Representa uma associação no conjunto de linhas à coluna específica no conjunto de linhas. Semelhante a COLUMN_NAME, exceto que esta macro também tem tipo de dados e status da coluna.

Sintaxe

COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)

Parâmetros

pszName
[in] Um ponteiro para o nome da coluna. O nome precisa ser uma cadeia de caracteres Unicode. Você pode fazer isso colocando um 'L' na frente do nome, por exemplo: L"MyColumn".

wType
[in] O tipo de dados.

status
[in] A variável a ser associada ao status da coluna.

data
[in] O membro de dados correspondente no registro de usuário.

Comentários

Confira COLUMN_NAME para obter informações sobre onde as macros COLUMN_NAME_* são usadas.

END_COLUMN_MAP

Marca o final das entradas do mapa de colunas.

Sintaxe

END_COLUMN_MAP()

Comentários

É usado com apenas um acessador em um conjunto de linhas. A macro BEGIN_COLUMN_MAP é concluída com a macro END_COLUMN_MAP.

Exemplo

Confira BEGIN_COLUMN_MAP.

DEFINE_COMMAND

Especifica o comando que será usado para criar o conjunto de linhas ao usar a classe CCommand. Aceita apenas tipos de cadeia de caracteres que correspondem ao tipo de aplicativo especificado (ANSI ou Unicode).

Observação

É recomendável que você use DEFINE_COMMAND_EX em vez de DEFINE_COMMAND.

Sintaxe

DEFINE_COMMAND(x, szCommand)

Parâmetros

x
[in] O nome da classe de registro (comando) do usuário.

szCommand
[in] A cadeia de caracteres de comando que será usada para criar o conjunto de linhas ao usar CCommand.

Comentários

A cadeia de caracteres de comando que você especificar será usada como padrão se você não especificar texto de comando no método CCommand::Open.

Essa macro aceitará cadeias de caracteres ANSI se você criar seu aplicativo como ANSI ou cadeias de caracteres Unicode se você criar seu aplicativo como Unicode. É recomendável que você use DEFINE_COMMAND_EX em vez de DEFINE_COMMAND, pois o primeiro aceita cadeias de caracteres Unicode, independentemente do tipo de aplicativo ANSI ou Unicode.

Exemplo

Confira BOOKMARK_ENTRY.

DEFINE_COMMAND_EX

Especifica o comando que será usado para criar o conjunto de linhas ao usar a classe CCommand. Dá suporte a aplicativos Unicode e ANSI.

Sintaxe

DEFINE_COMMAND_EX(x, wszCommand)

Parâmetros

x
[in] O nome da classe de registro (comando) do usuário.

wszCommand
[in] A cadeia de caracteres de comando que será usada para criar o conjunto de linhas ao usar CCommand.

Comentários

A cadeia de caracteres de comando que você especificar será usada como padrão se você não especificar texto de comando no método CCommand::Open.

Essa macro aceita cadeias de caracteres Unicode, independentemente do tipo de aplicativo. Essa macro é preferível a DEFINE_COMMAND porque dá suporte a aplicativos Unicode e ANSI.

Exemplo

Confira BOOKMARK_ENTRY.

BEGIN_PARAM_MAP

Marca o início de entradas do mapa de parâmetros.

Sintaxe

BEGIN_PARAM_MAP(x)

Parâmetros

x
[in] O nome da classe de registro do usuário.

Comentários

Os parâmetros são usados por comandos.

Exemplo

Confira o exemplo da macro BEGIN_COLUMN_MAP.

END_PARAM_MAP

Marca o final das entradas do mapa de parâmetros.

Sintaxe

END_PARAM_MAP()

Exemplo

Confira o exemplo da macro BEGIN_PARAM_MAP.

SET_PARAM_TYPE

Especifica macros COLUMN_ENTRY que seguem a entrada, a saída ou a entrada/saída da macro SET_PARAM_TYPE.

Sintaxe

SET_PARAM_TYPE(type)

Parâmetros

tipo
[in] O tipo a ser definido para o parâmetro.

Comentários

Os provedores dão suporte apenas a tipos de entrada/saída de parâmetros compatíveis com a fonte de dados subjacente. O tipo é uma combinação de um ou mais valores DBPARAMIO (confira Estruturas DBBINDING na Referência de programador do OLE DB):

  • DBPARAMIO_NOTPARAM O acessador não tem parâmetros. Normalmente, você define eParamIO para esse valor em acessadores de linha para lembrar ao usuário que os parâmetros são ignorados.

  • DBPARAMIO_INPUT Um parâmetro de entrada.

  • DBPARAMIO_OUTPUT Um parâmetro de saída.

  • DBPARAMIO_INPUT | DBPARAMIO_OUTPUT O parâmetro é um parâmetro de saída e de entrada.

Exemplo

class CArtistsProperty
{
public:
   short m_nReturn;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

BEGIN_PARAM_MAP(CArtistsProperty)
   SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
   COLUMN_ENTRY(1, m_nReturn)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()

BEGIN_COLUMN_MAP(CArtistsProperty)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsProperty, L" \
      { ? = SELECT Age FROM Artists WHERE Age < ? }")
};

Requisitos

Cabeçalho: atldbcli.h

Confira também

Macros e funções globais para modelos de consumidor do OLE DB
Modelos de consumidor OLE DB
Referência de modelos de consumidor do OLE DB