Macros para modelos de provedor de banco de dados OLE
As macros do Provedor de Modelos OLE DB oferecem funcionalidade nas seguintes categorias:
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ê. |
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. |
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. |
Cabeçalho: atldb.h
Marca o início de um conjunto de propriedades em um mapa de conjunto de propriedades.
BEGIN_PROPERTY_SET(guid)
guid
[in] O nome do GUID.
Confira BEGIN_PROPSET_MAP.
Marca o início de um conjunto de propriedades em um mapa de conjunto de propriedades.
BEGIN_PROPERTY_SET_EX(guid, flags)
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.
Confira BEGIN_PROPSET_MAP.
Marca o início das entradas do mapa do conjunto de propriedades.
BEGIN_PROPSET_MAP(Class)
Classe
[in] A classe na qual esse conjunto de propriedades é especificado. Um conjunto de propriedades pode ser especificado nos seguintes objetos OLE DB:
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()
Essa macro encadeia grupos de propriedades.
CHAIN_PROPERTY_SET(ChainClass)
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).
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.
Marca o final de um conjunto de propriedades.
END_PROPERTY_SET(guid)
guid
[in] O nome do GUID.
Confira BEGIN_PROPSET_MAP.
Marca o fim das entradas de mapa do conjunto de propriedades.
END_PROPSET_MAP()
Confira BEGIN_PROPSET_MAP.
Representa uma propriedade específica em um conjunto de propriedades.
PROPERTY_INFO_ENTRY(dwPropID)
dwPropID
[in] Um valor DBPROPID que pode ser usado em conjunto com o GUID do conjunto de propriedades para identificar uma propriedade.
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.
Confira BEGIN_PROPSET_MAP.
Representa uma propriedade específica em um conjunto de propriedades.
PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)
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.
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.
Confira BEGIN_PROPSET_MAP.
Representa uma propriedade específica em um conjunto de propriedades.
PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)
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
.
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.
Confira BEGIN_PROPSET_MAP.
Marca o início das entradas do mapa de colunas do provedor.
BEGIN_PROVIDER_COLUMN_MAP(theClass)
theClass
[in] O nome da classe à qual este mapa pertence.
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()
Marca o final das entradas do mapa de colunas do provedor.
END_PROVIDER_COLUMN_MAP()
Consulte BEGIN_PROVIDER_COLUMN_MAP.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY (name, ordinal, member)
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.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)
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.
Permite que você especifique o tipo de dados de coluna.
Consulte BEGIN_PROVIDER_COLUMN_MAP.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)
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.
Permite especificar o tamanho da coluna, o tipo de dados, a precisão, a escala e o GUID do conjunto de linhas de esquema.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)
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.
Permite que você especifique o tamanho da coluna.
Consulte BEGIN_PROVIDER_COLUMN_MAP.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)
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.
Use essa macro quando os dados da coluna forem considerados DBTYPE_STR.
Consulte BEGIN_PROVIDER_COLUMN_MAP.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)
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.
Semelhante a PROVIDER_COLUMN_ENTRY_LENGTH, mas também permite que você especifique o tipo de dados da coluna, bem como o tamanho.
Representa uma coluna específica com suporte do provedor.
PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)
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.
Use essa macro quando os dados da coluna forem uma cadeia de caracteres Unicode terminada em nulo, DBTYPE_WSTR.
Denota o início de um mapa de esquema.
BEGIN_SCHEMA_MAP(SchemaClass);
SchemaClass
A classe que contém o MAPA. Normalmente, essa será a classe de sessão.
Consulte IDBSchemaRowset no SDK do Windows para obter mais informações sobre conjuntos de linhas de esquema.
Denota o final do mapa de esquema.
END_SCHEMA_MAP()
Para obter mais informações, consulte Classe IDBSchemaRowsetImpl.
Associa um GUID a uma classe.
SCHEMA_ENTRY(guid,
rowsetClass);
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.
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.
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