Compartir vía


Macros para plantillas de proveedores OLE DB

Las macros para plantillas de proveedores OLE DB ofrecen funcionalidad en las siguientes categorías:

Macros de la asignación de un conjunto de propiedades

Nombre Descripción
BEGIN_PROPERTY_SET Marca el principio de un conjunto de propiedades.
BEGIN_PROPERTY_SET_EX Marca el principio de un conjunto de propiedades.
BEGIN_PROPSET_MAP Marca el principio de un conjunto de propiedades que se puede ocultar o definir fuera del ámbito del proveedor.
CHAIN_PROPERTY_SET Encadena los grupos de propiedades.
END_PROPERTY_SET Marca el final de un conjunto de propiedades.
END_PROPSET_MAP Marca el final de una asignación de conjunto de propiedades.
PROPERTY_INFO_ENTRY Establece una propiedad específica en una propiedad establecida en un valor predeterminado.
PROPERTY_INFO_ENTRY_EX Establece una propiedad específica de un conjunto de propiedades en un valor que suministre. También le permite establecer marcas y opciones.
PROPERTY_INFO_ENTRY_VALUE Establece una propiedad específica de un conjunto de propiedades en un valor que suministre.

Macros de asignación de columnas

Nombre Descripción
BEGIN_PROVIDER_COLUMN_MAP Marca el principio de las entradas de asignación de las columnas del proveedor.
END_PROVIDER_COLUMN_MAP Marca el final de las entradas de asignación de las columnas del proveedor.
PROVIDER_COLUMN_ENTRY Representa una columna específica admitida por el proveedor.
PROVIDER_COLUMN_ENTRY_FIXED Representa una columna específica admitida por el proveedor. Puede especificar el tipo de datos de columna.
PROVIDER_COLUMN_ENTRY_GN Representa una columna específica admitida por el proveedor. Puede especificar el tamaño de la columna, el tipo de datos, la precisión, la escala y el GUID del conjunto de filas del esquema.
PROVIDER_COLUMN_ENTRY_LENGTH Representa una columna específica admitida por el proveedor. Puede especificar el tamaño de la columna.
PROVIDER_COLUMN_ENTRY_STR Representa una columna específica admitida por el proveedor. Se supone que el tipo de columna es una cadena.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH Representa una columna específica admitida por el proveedor. Similar a PROVIDER_COLUMN_ENTRY_LENGTH, pero también permite especificar el tipo de datos de la columna, así como el tamaño.
PROVIDER_COLUMN_ENTRY_WSTR Representa una columna específica admitida por el proveedor. Se supone que el tipo de columna es una cadena de caracteres Unicode.

Macros de conjunto de filas de esquema

Nombre Descripción
BEGIN_SCHEMA_MAP Marca el principio de una asignación de esquema.
END_SCHEMA_MAP Marca el final de una asignación de esquema.
SCHEMA_ENTRY Asocia un GUID a una clase.

Requisitos

Encabezado: atldb.h

BEGIN_PROPERTY_SET

Marca el principio de un conjunto de propiedades en una asignación de conjunto de propiedades.

Sintaxis

BEGIN_PROPERTY_SET(guid)

Parámetros

guid
[in] GUID de propiedad.

Ejemplo

Vea BEGIN_PROPSET_MAP.

BEGIN_PROPERTY_SET_EX

Marca el principio de un conjunto de propiedades en una asignación de conjunto de propiedades.

Sintaxis

BEGIN_PROPERTY_SET_EX(guid, flags)

Parámetros

guid
[in] GUID de propiedad.

flags
[in] UPROPSET_HIDDEN para cualquier conjunto de propiedades que no desee exponer, o UPROPSET_PASSTHROUGH para un proveedor que exponga las propiedades definidas fuera del ámbito del proveedor.

Ejemplo

Vea BEGIN_PROPSET_MAP.

BEGIN_PROPSET_MAP

Marca el principio de las entradas de asignación del conjunto de propiedades.

Sintaxis

BEGIN_PROPSET_MAP(Class)

Parámetros

Clase
[in] Clase en la que se especifica este conjunto de propiedades. Se puede especificar un conjunto de propiedades en los siguientes objetos OLE DB:

Ejemplo

Esta es una asignación de conjunto de propiedades de ejemplo:

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

Esta macro encadena los grupos de propiedades.

Sintaxis

CHAIN_PROPERTY_SET(ChainClass)

Parámetros

ChainClass
[in] Nombre de la clase para la que se encadenan las propiedades. Se trata de una clase generada por el Asistente para proyectos ATL que ya contiene una asignación (como una sesión, un comando o una clase de objeto de origen de datos).

Comentarios

Puede encadenar un conjunto de propiedades de otra clase a su propia clase y, a continuación, acceder a las propiedades directamente desde la clase.

Precaución

Utilice esta macro con moderación. Un uso inadecuado puede hacer que el consumidor no supere las pruebas de conformidad de OLE DB.

END_PROPERTY_SET

Marca el final de un conjunto de propiedades.

Sintaxis

END_PROPERTY_SET(guid)

Parámetros

guid
[in] GUID de propiedad.

Ejemplo

Vea BEGIN_PROPSET_MAP.

END_PROPSET_MAP

Marca el final de las entradas de asignación del conjunto de propiedades.

Sintaxis

END_PROPSET_MAP()

Ejemplo

Vea BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY

Representa una propiedad concreta de un conjunto de propiedades.

Sintaxis

PROPERTY_INFO_ENTRY(dwPropID)

Parámetros

dwPropID
[in] Valor DBPROPID que se puede usar con el GUID del conjunto de propiedades para identificar una propiedad.

Comentarios

Esta macro establece el valor de propiedad de tipo DWORD en un valor predeterminado definido en ATLDB. H. Para establecer la propiedad en un valor de su elección, use PROPERTY_INFO_ENTRY_VALUE. Para establecer VARTYPE y DBPROPFLAGS para la propiedad al mismo tiempo, use PROPERTY_INFO_ENTRY_EX.

Ejemplo

Vea BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_EX

Representa una propiedad concreta de un conjunto de propiedades.

Sintaxis

PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)

Parámetros

dwPropID
[in] Valor DBPROPID que se puede usar con el GUID del conjunto de propiedades para identificar una propiedad.

vt
[in] La VARTYPE de esta entrada de la propiedad. (Definido en wtypes.h)

dwFlags
[in] Un valor DBPROPFLAGS que describe esta entrada de la propiedad.

value
[in] El valor de la propiedad de tipo DWORD.

options
DBPROPOPTIONS_REQUIRED o DBPROPOPTIONS_SETIFCHEAP. Normalmente, un proveedor no necesita establecer opciones, ya que lo hace el consumidor.

Comentarios

Con esta macro, puede especificar directamente el valor de propiedad de tipo DWORD así como opciones y marcas. Para establecer simplemente una propiedad a un valor predeterminado definido en ATLDB.H, use PROPERTY_INFO_ENTRY. Para establecer una propiedad a un valor de su elección, sin establecer opciones ni marcas en ella, use PROPERTY_INFO_ENTRY_VALUE.

Ejemplo

Vea BEGIN_PROPSET_MAP.

PROPERTY_INFO_ENTRY_VALUE

Representa una propiedad concreta de un conjunto de propiedades.

Sintaxis

PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)

Parámetros

dwPropID
[in] Valor DBPROPID que se puede usar con el GUID del conjunto de propiedades para identificar una propiedad.

value
[in] El valor de la propiedad de tipo DWORD.

Comentarios

Con esta macro, puede especificar directamente el valor de propiedad de tipo DWORD. Para establecer la propiedad a un valor predeterminado definido en ATLDB.H, use PROPERTY_INFO_ENTRY. Para establecer el valor, las marcas y las opciones de la propiedad, use PROPERTY_INFO_ENTRY_EX.

Ejemplo

Vea BEGIN_PROPSET_MAP.

BEGIN_PROVIDER_COLUMN_MAP

Marca el principio de las entradas de asignación de las columnas del proveedor.

Sintaxis

BEGIN_PROVIDER_COLUMN_MAP(theClass)

Parámetros

theClass
[in] Nombre de la clase a la que pertenece esta asignación.

Ejemplo

Este es un ejemplo de asignación de una columna de proveedores:

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 el final de las entradas de asignación de las columnas del proveedor.

Sintaxis

END_PROVIDER_COLUMN_MAP()

Ejemplo

Consulte BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY (name, ordinal, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

member
[in] Variable de miembro en dataClass correspondiente a la columna.

PROVIDER_COLUMN_ENTRY_FIXED

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

dbtype
[in] Tipo de datos en DBTYPE.

member
[in] Variable miembro de dataClass que almacena los datos.

Comentarios

Permite especificar el tipo de datos de columna.

Ejemplo

Consulte BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_GN

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

flags
[in] Especifica cómo se devuelven los datos. Consulte la descripción de dwFlags en las estructuras DBBINDING.

colSize
[in] Tamaño de columna.

dbtype
[in] Indica el tipo de datos del valor. Consulte la descripción de wType en las estructuras DBBINDING.

precisión
[in] Indica la precisión que se va a usar al obtener datos si dbType es DBTYPE_NUMERIC o DBTYPE_DECIMAL. Consulte la descripción de bPrecision en las estructuras DBBINDING.

scale
[in] Indica la escala que se va a usar al obtener datos si dbType es DBTYPE_NUMERIC o DBTYPE_DECIMAL. Consulte la descripción de bScale en las estructuras DBBINDING.

guid
GUID de conjunto de filas de esquema. Consulte IDBSchemaRowset en la Referencia del programador de OLE DB para obtener una lista de conjuntos de filas de esquema y sus GUID.

Comentarios

Le permite especificar el tamaño de la columna, el tipo de datos, la precisión, la escala y el GUID del conjunto de filas del esquema.

PROVIDER_COLUMN_ENTRY_LENGTH

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

size
[in] Tamaño de columna en bytes.

member
[in] Variable miembro de dataClass que almacena los datos de columnas.

Comentarios

Permite especificar el tamaño de la columna.

Ejemplo

Consulte BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_STR

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

member
[in] Variable miembro de la clase de datos que almacena los datos.

Comentarios

Use esta macro cuando se suponga que los datos de la columna son DBTYPE_STR.

Ejemplo

Consulte BEGIN_PROVIDER_COLUMN_MAP.

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

dbtype
[in] Tipo de datos en DBTYPE.

size
[in] Tamaño de columna en bytes.

member
[in] Variable miembro de la clase de datos que almacena los datos.

Comentarios

Similar a PROVIDER_COLUMN_ENTRY_LENGTH, pero también permite especificar el tipo de datos de la columna, así como el tamaño.

PROVIDER_COLUMN_ENTRY_WSTR

Representa una columna específica admitida por el proveedor.

Sintaxis

PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)

Parámetros

name
[in] Nombre de la columna.

ordinal
[in] Número de la columna. A menos que la columna sea una columna delimitadora, el número de columna no debe ser 0.

member
[in] Variable miembro de la clase de datos que almacena los datos.

Comentarios

Use esta macro cuando los datos de la columna sean una cadena de caracteres Unicode terminada en null, DBTYPE_WSTR.

BEGIN_SCHEMA_MAP

Indica el principio de una asignación de esquema.

Sintaxis

BEGIN_SCHEMA_MAP(SchemaClass);

Parámetros

SchemaClass
Clase que contiene la asignación. Normalmente, será la clase de sesión.

Comentarios

Consulte IDBSchemaRowset en Windows SDK para obtener más información sobre los conjuntos de filas de esquema.

END_SCHEMA_MAP

Indica el final de la asignación de esquema.

Sintaxis

END_SCHEMA_MAP()

Comentarios

Para obtener más información, consulte IDBSchemaRowsetImpl (Clase).

SCHEMA_ENTRY

Asocia un GUID a una clase.

Sintaxis

SCHEMA_ENTRY(guid,
   rowsetClass);

Parámetros

guid
GUID de conjunto de filas de esquema. Consulte IDBSchemaRowset en la Referencia del programador de OLE DB para obtener una lista de conjuntos de filas de esquema y sus GUID.

rowsetClass
Clase que se creará para representar el conjunto de filas de esquema.

Comentarios

IDBSchemaRowsetImpl puede consultar la asignación para obtener una lista de GUID, o bien puede crear un conjunto de filas si se le proporciona un GUID. El conjunto de filas de esquema que crea IDBSchemaRowsetImpl es similar a una clase derivada de CRowsetImpl estándar, excepto que debe proporcionar un método Execute que tenga la siguiente firma:

HRESULT Execute (LONG* pcRowsAffected,
    ULONG cRestrictions,
    const VARIANT* rgRestrictions);

Esta función Execute rellena los datos del conjunto de filas. El Asistente para proyectos ATL crea, como se describe en IDBSchemaRowset en la Referencia del programador de OLE DB, tres conjuntos de filas de esquema iniciales en el proyecto para cada uno de los tres esquemas OLE DB obligatorios:

  • DBSCHEMA_TABLES

  • DBSCHEMA_COLUMNS

  • DBSCHEMA_PROVIDER_TYPES

El asistente también agrega tres entradas correspondientes en el mapa de esquema. Consulte Creación de un proveedor de plantillas OLE DB para obtener más información sobre cómo usar el asistente para crear un proveedor.

Consulte también

Plantillas de proveedores OLE DB
Arquitectura de plantillas de proveedores OLE DB
Crear un proveedor OLE DB
Referencia de plantillas de proveedores OLE DB
Macros para plantillas de proveedores OLE DB