Macros para modelos de provedor de banco de dados OLE
As macros do Provedor de Modelos OLE DB oferecem funcionalidade nas seguintes categorias:
Macros de mapa de conjunto de propriedades
Nome | Descrição |
---|---|
BEGIN_PROPERTY_SET | Marca o início de um conjunto de propriedades. |
BEGIN_PROPERTY_SET_EX | Marca o início de um conjunto de propriedades. |
BEGIN_PROPSET_MAP | Marca o início de um conjunto de propriedades que pode ser oculto ou definido fora do escopo do provedor. |
CHAIN_PROPERTY_SET | Encadeia grupos de propriedades. |
END_PROPERTY_SET | Marca o final de um conjunto de propriedades. |
END_PROPSET_MAP | Marca o final de um mapa de conjunto de propriedades. |
PROPERTY_INFO_ENTRY | Define uma propriedade específica em um conjunto de propriedades como um valor padrão. |
PROPERTY_INFO_ENTRY_EX | Define uma propriedade específica em um conjunto de propriedades como um valor fornecido por você. Também permite que você defina sinalizadores e opções. |
PROPERTY_INFO_ENTRY_VALUE | Define uma propriedade específica em um conjunto de propriedades como um valor fornecido por você. |
Macros de mapa de colunas
Nome | Descrição |
---|---|
BEGIN_PROVIDER_COLUMN_MAP | Marca o início das entradas do mapa de colunas do provedor. |
END_PROVIDER_COLUMN_MAP | Marca o final das entradas do mapa de colunas do provedor. |
PROVIDER_COLUMN_ENTRY | Representa uma coluna específica com suporte do provedor. |
PROVIDER_COLUMN_ENTRY_FIXED | Representa uma coluna específica com suporte do provedor. Você pode especificar o tipo de dados de coluna. |
PROVIDER_COLUMN_ENTRY_GN | Representa uma coluna específica com suporte do provedor. Você pode especificar o tamanho da coluna, o tipo de dados, a precisão, a escala e o GUID do conjunto de linhas de esquema. |
PROVIDER_COLUMN_ENTRY_LENGTH | Representa uma coluna específica com suporte do provedor. Você pode especificar o tamanho da coluna. |
PROVIDER_COLUMN_ENTRY_STR | Representa uma coluna específica com suporte do provedor. Ele pressupõe que o tipo de coluna seja uma cadeia de caracteres. |
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH | Representa uma coluna específica com suporte do provedor. Como PROVIDER_COLUMN_ENTRY_LENGTH, mas também permite que você especifique o tipo de dados da coluna, bem como o tamanho. |
PROVIDER_COLUMN_ENTRY_WSTR | Representa uma coluna específica com suporte do provedor. Ele pressupõe que o tipo de coluna seja uma cadeia de caracteres Unicode. |
Macros de conjunto de linhas de esquema
Nome | Descrição |
---|---|
BEGIN_SCHEMA_MAP | Marca o início de um mapa de esquema. |
END_SCHEMA_MAP | Marca o fim de um mapa de esquema. |
SCHEMA_ENTRY | Associa um GUID a uma classe. |
Requisitos
Cabeçalho: atldb.h
BEGIN_PROPERTY_SET
Marca o início de um conjunto de propriedades em um mapa de conjunto de propriedades.
Sintaxe
BEGIN_PROPERTY_SET(guid)
Parâmetros
guid
[in] O nome do GUID.
Exemplo
Confira BEGIN_PROPSET_MAP.
BEGIN_PROPERTY_SET_EX
Marca o início de um conjunto de propriedades em um mapa de conjunto de propriedades.
Sintaxe
BEGIN_PROPERTY_SET_EX(guid, flags)
Parâmetros
guid
[in] O nome do GUID.
sinalizadores
[in] UPROPSET_HIDDEN para quaisquer conjuntos de propriedades que você não deseja expor ou UPROPSET_PASSTHROUGH para um provedor expor propriedades definidas fora do escopo do provedor.
Exemplo
Confira BEGIN_PROPSET_MAP.
BEGIN_PROPSET_MAP
Marca o início das entradas do mapa do conjunto de propriedades.
Sintaxe
BEGIN_PROPSET_MAP(Class)
Parâmetros
Classe
[in] A classe na qual esse conjunto de propriedades é especificado. Um conjunto de propriedades pode ser especificado nos seguintes objetos OLE DB:
Exemplo
Aqui está um mapa de conjunto de propriedades de exemplo:
BEGIN_PROPSET_MAP(CCustomSource)
BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
PROPERTY_INFO_ENTRY(ACTIVESESSIONS)
PROPERTY_INFO_ENTRY(DATASOURCEREADONLY)
PROPERTY_INFO_ENTRY(BYREFACCESSORS)
PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY)
PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER)
PROPERTY_INFO_ENTRY(DSOTHREADMODEL)
PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS)
PROPERTY_INFO_ENTRY(USERNAME)
END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
BEGIN_PROPERTY_SET(DBPROPSET_DBINIT)
PROPERTY_INFO_ENTRY(AUTH_PASSWORD)
PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO)
PROPERTY_INFO_ENTRY(AUTH_USERID)
PROPERTY_INFO_ENTRY(INIT_DATASOURCE)
PROPERTY_INFO_ENTRY(INIT_HWND)
PROPERTY_INFO_ENTRY(INIT_LCID)
PROPERTY_INFO_ENTRY(INIT_LOCATION)
PROPERTY_INFO_ENTRY(INIT_MODE)
PROPERTY_INFO_ENTRY(INIT_PROMPT)
PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING)
PROPERTY_INFO_ENTRY(INIT_TIMEOUT)
END_PROPERTY_SET(DBPROPSET_DBINIT)
CHAIN_PROPERTY_SET(CCustomSession)
CHAIN_PROPERTY_SET(CCustomCommand)
END_PROPSET_MAP()
CHAIN_PROPERTY_SET
Essa macro encadeia grupos de propriedades.
Sintaxe
CHAIN_PROPERTY_SET(ChainClass)
Parâmetros
ChainClass
[in] O nome da classe para a qual encadear as propriedades. Essa é uma classe gerada pelo Assistente de Projeto da ATL que já contém um mapa (como uma classe de objeto de sessão, comando ou fonte de dados).
Comentários
Você pode encadear um conjunto de propriedade definida de outra classe para sua própria classe e, em seguida, acessar as propriedades diretamente de sua classe.
Cuidado
Use esta macro com moderação. O uso inadequado pode fazer com que um consumidor falhe nos testes de conformidade do OLE DB.
END_PROPERTY_SET
Marca o final de um conjunto de propriedades.
Sintaxe
END_PROPERTY_SET(guid)
Parâmetros
guid
[in] O nome do GUID.
Exemplo
Confira BEGIN_PROPSET_MAP.
END_PROPSET_MAP
Marca o fim das entradas de mapa do conjunto de propriedades.
Sintaxe
END_PROPSET_MAP()
Exemplo
Confira BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY
Representa uma propriedade específica em um conjunto de propriedades.
Sintaxe
PROPERTY_INFO_ENTRY(dwPropID)
Parâmetros
dwPropID
[in] Um valor DBPROPID que pode ser usado em conjunto com o GUID do conjunto de propriedades para identificar uma propriedade.
Comentários
Essa macro define o valor da propriedade de tipo DWORD
como um valor padrão definido em ATLDB.H. Para definir a propriedade como um valor de sua escolha, use PROPERTY_INFO_ENTRY_VALUE. Para definir a VARTYPE
e DBPROPFLAGS para a propriedade ao mesmo tempo, use PROPERTY_INFO_ENTRY_EX.
Exemplo
Confira BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY_EX
Representa uma propriedade específica em um conjunto de propriedades.
Sintaxe
PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)
Parâmetros
dwPropID
[in] Um valor DBPROPID que pode ser usado em conjunto com o GUID do conjunto de propriedades para identificar uma propriedade.
Vt
[in] A VARTYPE
desta entrada de propriedade. (Definida em wtypes.h)
dwFlags
[in] Um valor DBPROPFLAGS que descreve essa entrada de propriedade.
value
[in] O valor da propriedade do tipo DWORD
.
options
DBPROPOPTIONS_REQUIRED ou DBPROPOPTIONS_SETIFCHEAP. Normalmente, um provedor não precisa definir opções, pois ele é definido pelo consumidor.
Comentários
Com essa macro, você pode especificar diretamente o valor da propriedade do tipo DWORD
, bem como as opções e sinalizadores. Para simplesmente definir uma propriedade como um valor padrão definido em ATLDB. H, use PROPERTY_INFO_ENTRY. Para definir uma propriedade como um valor de sua escolha, sem definir opções ou sinalizadores nela, use PROPERTY_INFO_ENTRY_VALUE.
Exemplo
Confira BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY_VALUE
Representa uma propriedade específica em um conjunto de propriedades.
Sintaxe
PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)
Parâmetros
dwPropID
[in] Um valor DBPROPID que pode ser usado em conjunto com o GUID do conjunto de propriedades para identificar uma propriedade.
value
[in] O valor da propriedade do tipo DWORD
.
Comentários
Com essa macro, você pode especificar diretamente o valor da propriedade do tipo DWORD
. Para definir a propriedade como valor padrão definido em ATLDB. H, use PROPERTY_INFO_ENTRY. Para definir o valor, os sinalizadores e as opções da propriedade, use PROPERTY_INFO_ENTRY_EX.
Exemplo
Confira BEGIN_PROPSET_MAP.
BEGIN_PROVIDER_COLUMN_MAP
Marca o início das entradas do mapa de colunas do provedor.
Sintaxe
BEGIN_PROVIDER_COLUMN_MAP(theClass)
Parâmetros
theClass
[in] O nome da classe à qual este mapa pertence.
Exemplo
Aqui está um mapa de coluna do provedor de exemplo:
BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile)
PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
END_PROVIDER_COLUMN_MAP
Marca o final das entradas do mapa de colunas do provedor.
Sintaxe
END_PROVIDER_COLUMN_MAP()
Exemplo
Consulte BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY (name, ordinal, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
member
[in] A variável membro em dataClass
correspondente à coluna.
PROVIDER_COLUMN_ENTRY_FIXED
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
dbtype
[in] O tipo de dados no DBTYPE.
member
[in] A variável de membro em dataClass
que armazena os dados.
Comentários
Permite que você especifique o tipo de dados de coluna.
Exemplo
Consulte BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_GN
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
sinalizadores
[in] Especifica como os dados são retornados. Consulte a descrição de dwFlags
nas Estruturas DBBINDING.
colSize
[in] O tamanho da coluna.
dbtype
[in] Indica o tipo de dados do valor. Consulte a descrição de wType
nas Estruturas DBBINDING.
precisão
[in] Indica a precisão a ser usada ao obter dados se dbType for DBTYPE_NUMERIC ou DBTYPE_DECIMAL. Consulte a descrição de bPrecision
nas Estruturas DBBINDING.
scale
[in] Indica a escala a ser usada ao obter dados se dbType for DBTYPE_NUMERIC ou DBTYPE_DECIMAL. Consulte a descrição de bScale
nas Estruturas DBBINDING.
guid
Um GUID de conjunto de linhas de esquema. Consulte IDBSchemaRowset na Referência do Programador OLE DB para obter uma lista de conjuntos de linhas de esquema e seus GUIDs.
Comentários
Permite especificar o tamanho da coluna, o tipo de dados, a precisão, a escala e o GUID do conjunto de linhas de esquema.
PROVIDER_COLUMN_ENTRY_LENGTH
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
size
[in] Tamanho da coluna em bytes.
member
[in] A variável de membro que dataClass
armazena os dados da coluna.
Comentários
Permite que você especifique o tamanho da coluna.
Exemplo
Consulte BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_STR
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
member
[in] A variável de membro na classe de dados que armazena os dados.
Comentários
Use essa macro quando os dados da coluna forem considerados DBTYPE_STR.
Exemplo
Consulte BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
dbtype
[in] O tipo de dados no DBTYPE.
size
[in] Tamanho da coluna em bytes.
member
[in] A variável de membro na classe de dados que armazena os dados.
Comentários
Semelhante a PROVIDER_COLUMN_ENTRY_LENGTH, mas também permite que você especifique o tipo de dados da coluna, bem como o tamanho.
PROVIDER_COLUMN_ENTRY_WSTR
Representa uma coluna específica com suporte do provedor.
Sintaxe
PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)
Parâmetros
name
[in] O nome da coluna.
ordinal
[in] O número da coluna. A menos que a coluna seja uma coluna Indicador, o número da coluna não deve ser 0.
member
[in] A variável de membro na classe de dados que armazena os dados.
Comentários
Use essa macro quando os dados da coluna forem uma cadeia de caracteres Unicode terminada em nulo, DBTYPE_WSTR.
BEGIN_SCHEMA_MAP
Denota o início de um mapa de esquema.
Sintaxe
BEGIN_SCHEMA_MAP(SchemaClass);
Parâmetros
SchemaClass
A classe que contém o MAPA. Normalmente, essa será a classe de sessão.
Comentários
Consulte IDBSchemaRowset no SDK do Windows para obter mais informações sobre conjuntos de linhas de esquema.
END_SCHEMA_MAP
Denota o final do mapa de esquema.
Sintaxe
END_SCHEMA_MAP()
Comentários
Para obter mais informações, consulte Classe IDBSchemaRowsetImpl.
SCHEMA_ENTRY
Associa um GUID a uma classe.
Sintaxe
SCHEMA_ENTRY(guid,
rowsetClass);
Parâmetros
guid
Um GUID de conjunto de linhas de esquema. Consulte IDBSchemaRowset na Referência do Programador OLE DB para obter uma lista de conjuntos de linhas de esquema e seus GUIDs.
rowsetClass
A classe que será criada para representar o conjunto de linhas de esquema.
Comentários
IDBSchemaRowsetImpl pode consultar o mapa para obter uma lista de GUIDs ou pode criar um conjunto de linhas se receber um GUID. O conjunto de linhas de esquema IDBSchemaRowsetImpl
é semelhante a uma classe padrão derivada de CRowsetImpl
, exceto que ele deve fornecer um método Execute
que tenha a seguinte assinatura:
HRESULT Execute (LONG* pcRowsAffected,
ULONG cRestrictions,
const VARIANT* rgRestrictions);
Essa função Execute
preenche os dados do conjunto de linhas. O Assistente de Projeto da ATL cria, conforme descrito no IDBSchemaRowset na Referência do Programador OLE DB, três conjuntos de linhas de esquema iniciais no projeto para cada um dos três esquemas obrigatórios do OLE DB:
DBSCHEMA_TABLES
DBSCHEMA_COLUMNS
DBSCHEMA_PROVIDER_TYPES
O assistente também adiciona três entradas correspondentes no mapa do esquema. Consulte Criando um provedor de modelo OLE DB para obter mais informações sobre como usar o assistente para criar um provedor.
Confira também
Modelos de Provedor OLE DB
Arquitetura de modelo do provedor do OLE DB
Criando um provedor do OLE DB
Referência dos modelos de provedor do OLE DB
Macros para modelos de provedor do OLE DB