IDBSchemaRowsetImpl (clase)
Proporciona la implementación de conjuntos de filas de esquema.
Sintaxis
template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset
Parámetros
SessionClass
La clase por la que IDBSchemaRowsetImpl
se hereda. Normalmente, esta clase será la clase de sesión del usuario.
Requisitos
Encabezado: atldb.h
Miembros
Métodos
Nombre | Descripción |
---|---|
CheckRestrictions | Comprueba la validez de las restricciones en un conjunto de filas de esquema. |
CreateSchemaRowset | Implementa una función de creación de objetos COM para el objeto especificado por el parámetro de la plantilla. |
SetRestrictions | Especifica qué restricciones se admiten en un conjunto de filas de esquema determinado. |
Métodos de interfaz
Nombre | Descripción |
---|---|
GetRowset | Devuelve un conjunto de filas de esquema. |
GetSchemas | Devuelve una lista de conjuntos de filas de esquema accesibles por IDBSchemaRowsetImpl::GetRowset. |
Comentarios
Esta clase implementa la interfaz IDBSchemaRowset y la función de creador de plantillas CreateSchemaRowset.
OLE DB usa conjuntos de filas de esquema para devolver datos sobre los datos de un proveedor. Estos datos suelen llamarse "metadatos". de forma predeterminada, un proveedor debe admitir siempre DBSCHEMA_TABLES
, DBSCHEMA_COLUMNS
y DBSCHEMA_PROVIDER_TYPES
como se describe en IDBSchemaRowset en la Referencia del programador de OLE DB. Conjuntos de filas de esquema se designan en una asignación de esquema. Para obtener información sobre las entradas de asignación de esquema, vea SCHEMA_ENTRY.
El Asistente para proveedores OLE DB, en el Asistente para objetos ATL, genera automáticamente el código para los conjuntos de filas de esquema en el proyecto. (De forma predeterminada, el asistente admite los conjuntos de filas de esquema obligatorios mencionados anteriormente). Al crear un consumidor mediante el Asistente para objetos ATL, el asistente usa conjuntos de filas de esquema para enlazar los datos correctos a un proveedor. Si no implementa los conjuntos de filas de esquema para proporcionar los metadatos correctos, el asistente no enlazará los datos correctos.
Para obtener más información sobre la compatibilidad del proveedor con los conjuntos de filas de esquema, vea Admitir conjuntos de filas de esquema.
Para obtener más información sobre los conjuntos de filas de esquema, vea Conjuntos de filas de esquema en la Referencia del programador de OLE DB.
IDBSchemaRowsetImpl::CheckRestrictions
Comprueba la validez de las restricciones en un conjunto de filas de esquema.
Sintaxis
HRESULT CheckRestrictions(REFGUID rguidSchema,
ULONG cRestrictions, const VARIANT rgRestrictions[]);
Parámetros
rguidSchema
[in] Referencia al GUID del conjunto de filas de esquema solicitado (por ejemplo, DBSCHEMA_TABLES
).
cRestrictions
[in] Número de restricciones que el consumidor pasó para el conjunto de filas de esquema.
rgRestrictions
[in] Matriz de longitud cRestrictions de los valores de restricción que se van a establecer. Para obtener más información, consulte la descripción del parámetro rgRestrictions en SetRestrictions.
Comentarios
Use CheckRestrictions
para comprobar la validez de las restricciones en un conjunto de filas de esquema. Comprueba las restricciones para los conjuntos de filas de esquema DBSCHEMA_TABLES
DBSCHEMA_COLUMNS
y DBSCHEMA_PROVIDER_TYPES
. Llámelo para determinar si la llamada de un consumidor a IDBSchemaRowset::GetRowset
es correcta. Si quiere admitir conjuntos de filas de esquema distintos de los mencionados anteriormente, debe crear su propia función para llevar a cabo esta tarea.
CheckRestrictions
determina si el consumidor llama a GetRowset con la restricción correcta y el tipo de restricción correcto (por ejemplo, VT_BSTR para una cadena) que admite el proveedor. También determina si se admite el número correcto de restricciones. De forma predeterminada, CheckRestrictions
le preguntará al proveedor mediante la llamada SetRestrictions cuáles son las restricciones que admite en un conjunto de filas determinado. Después, compara las restricciones del consumidor con las que admite el proveedor y la operación se realiza correctamente o bien se produce un error.
Para obtener más información sobre los conjuntos de filas de esquema, vea IDBSchemaRowset en la Referencia del programador de OLE DB en Windows SDK.
IDBSchemaRowsetImpl::CreateSchemaRowset
Implementa una función de creación de objetos COM para el objeto especificado por el parámetro de la plantilla.
Sintaxis
template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
ULONG cRestrictions,
const VARIANT rgRestrictions[],
REFIID riid,
ULONG cPropertySets,
DBPROPSET rgPropertySets[],
IUnknown** ppRowset,
SchemaRowsetClass*& pSchemaRowset);
Parámetros
pUnkOuter
[in] Valor IUnknown externo al agregar; en caso contrario, NULL.
cRestrictions
[in] El recuento de restricciones aplicado al conjunto de filas de esquema.
rgRestrictions
[in] Una matriz de cRestrictions
VARIANTse aplicará al conjunto de filas.
riid
[in] La interfaz para QueryInterface en el valor IUnknown
.
cPropertySets
[in] Número de conjuntos de propiedad que se van a establecer.
rgPropertySets
[in] Una matriz de estructuras DBPROPSET que especifica las propiedades que se están estableciendo.
ppRowset
[out] El valor IUnknown
saliente solicitado por riid. Este valor IUnknown
es una interfaz en el objeto de conjunto de filas de esquema.
pSchemaRowset
[out] Un puntero a una instancia de la clase de conjunto de filas de esquema. Normalmente, este parámetro no se usa, pero se puede usar si debe realizar más trabajo en el conjunto de filas de esquema antes de entregarlo a un objeto COM. La duración de pSchemaRowset está enlazada por ppRowset.
Valor devuelto
Valor HRESULT estándar.
Comentarios
Esta función implementa un creador genérico para todos los tipos de conjuntos de filas de esquema. Normalmente, el usuario no llama a esta función. Se llama mediante la implementación de la asignación de esquema.
IDBSchemaRowsetImpl::SetRestrictions
Especifica qué restricciones se admiten en un conjunto de filas de esquema determinado.
Sintaxis
void SetRestrictions(ULONG cRestrictions,
GUID* /* rguidSchema */,
ULONG* rgRestrictions);
Parámetros
cRestrictions
[in] El número de restricciones en la matriz de rgRestrictions y el número de GUID en la matriz de rguidSchema.
rguidSchema
[in] Una matriz de GUID de conjuntos de filas de esquema para los que se deben obtener restricciones. Cada elemento de la matriz contiene el GUID de un conjunto de filas de esquema (por ejemplo, DBSCHEMA_TABLES
).
rgRestrictions
[in] Matriz de longitud cRestrictions de los valores de restricción que se van a establecer. Cada elemento corresponde a las restricciones en el conjunto de filas de esquema identificado por el GUID. Si el proveedor no admite un conjunto de filas de esquema, el elemento se establece en cero. De otro modo, el valor de ULONG contiene una máscara de bits que representa las restricciones admitidas en ese conjunto de filas de esquema. Para obtener más información sobre qué restricciones corresponden a un conjunto de filas de esquema determinado, consulte la tabla del conjunto de filas de esquema GUID en IDBSchemaRowset en la Referencia del programador de OLE DB en Windows SDK.
Comentarios
El objeto de IDBSchemaRowset
llama a SetRestrictions
para determinar qué restricciones se admiten en un conjunto de filas de esquema determinado ( GetSchemas llama mediante un puntero de conversión hacia arriba). Las restricciones permiten a los clientes obtener solo las filas coincidentes (por ejemplo, buscar todas las columnas de la tabla "MyTable"). Las restricciones son opcionales y, en caso de que no se admita ninguna (comportamiento predeterminado), se devuelven siempre todos los datos.
La implementación predeterminada de este método establece los elementos de la matriz rgRestrictions en 0. Reemplace el valor predeterminado en la clase de sesión para establecer restricciones distintas de las predeterminadas.
Para obtener información sobre cómo implementar la compatibilidad de conjunto de filas de esquema, vea Admitir conjuntos de filas de esquema.
Para obtener un ejemplo de un proveedor que admite conjuntos de filas de esquema, vea el ejemplo UpdatePV .
Para obtener más información sobre los conjuntos de filas de esquema, vea IDBSchemaRowset en la Referencia del programador de OLE DB en Windows SDK.
IDBSchemaRowsetImpl::GetRowset
Devuelve un conjunto de filas de esquema.
Sintaxis
STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
REFGUID rguidSchema,
ULONG cRestrictions,
const VARIANT rgRestrictions[],
REFIID riid,
ULONG cPropertySets,
DBPROPSET rgPropertySets[],
IUnknown **ppRowset);
Parámetros
pUnkOuter
[in] Valor IUnknown
externo al agregar; en caso contrario, NULL.
rguidSchema
[in] Referencia al GUID del conjunto de filas de esquema solicitado (por ejemplo, DBSCHEMA_TABLES
).
cRestrictions
[in] Recuento de restricciones que se aplicarán al conjunto de filas.
rgRestrictions
[in] Matriz de cRestrictions
cRestrictionsque representa las restricciones.
riid
[in] IID que se va a solicitar del conjunto de filas de esquema recién creado.
cPropertySets
[in] Número de conjuntos de propiedad que se van a establecer.
rgPropertySets
[in/out] Matriz de estructuras DBPROPSET que se van a establecer en el conjunto de filas de esquema recién creado.
ppRowset
[out] Puntero a la interfaz solicitada en el conjunto de filas de esquema recién creado.
Comentarios
Este método exige que el usuario tenga una asignación de esquema en la clase de sesión. Mediante la información de la asignación de esquema, GetRowset
crea un objeto de conjunto de filas determinado si el parámetro rguidSchema es igual a uno de los GUID de las entradas de asignación. Vea SCHEMA_ENTRY para obtener una descripción de la entrada de asignación.
Vea IDBSchemaRowset::GetRowset en Windows SDK.
IDBSchemaRowsetImpl::GetSchemas
Devuelve una lista de conjuntos de filas de esquema accesibles por IDBSchemaRowsetImpl::GetRowset.
Sintaxis
STDMETHOD (GetSchema s )(ULONG * pcSchemas,
GUID ** prgSchemas,
ULONG** prgRest);
Parámetros
pcSchemas
[out] Puntero a un ULONG que se rellena con el número de esquemas.
prgSchemas
[out] Puntero a una matriz de GUID que se rellena con un puntero a una matriz de GUID de conjuntos de filas de esquema.
prgRest
[out] Puntero a una matriz de ULONGque se va a rellenar con la matriz de restricciones.
Comentarios
Este método devuelve una matriz de todos los conjuntos de filas de esquema admitidos por el proveedor. Consulte IDBSchemaRowset:: GetSchemas en Windows SDK.
La implementación de esta función exige que el usuario tenga una asignación de esquema en la clase de sesión. Luego, con la información de la asignación de esquema, responde con la matriz de GUID de los esquemas de la asignación. Representa los esquemas admitidos por el proveedor.
Consulte también
Clases de conjunto de filas de esquema y clases typedef
Admitir conjuntos de filas de esquema
SCHEMA_ENTRY
UpdatePV