Compartir a través de


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_TABLESDBSCHEMA_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 cRestrictionsVARIANTse 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 cRestrictionscRestrictionsque 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