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