Compartilhar via


Classe IDBSchemaRowsetImpl

Fornece implementação para conjuntos de linhas de esquema.

Sintaxe

template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset

Parâmetros

SessionClass
A classe pela qual IDBSchemaRowsetImpl é herdada. Normalmente, essa classe será a classe de sessão do usuário.

Requisitos

Cabeçalho: atldb.h

Membros

Métodos

Nome Descrição
CheckRestrictions Verifica a validade das restrições em relação a um conjunto de linhas de esquema.
CreateSchemaRowset Implementa uma função de criador do objeto COM para o objeto especificado pelo parâmetro do modelo.
SetRestrictions Especifica a quais restrições você oferece suporta em um conjunto de linhas de esquema específico.

Métodos de interface

Nome Descrição
GetRowset Retorna um conjunto de linhas de esquema.
GetSchemas Retorna uma lista de conjuntos de linhas de esquema acessíveis por IDBSchemaRowsetImpl::GetRowset.

Comentários

Essa classe implementa a interface IDBSchemaRowset e a função de criador modelo CreateSchemaRowset.

O OLE DB usa conjuntos de linhas de esquema para retornar dados sobre os dados em um provedor. Esses dados geralmente são chamados de "metadados". Por padrão, um provedor deve sempre dar suporte a DBSCHEMA_TABLES, DBSCHEMA_COLUMNS e DBSCHEMA_PROVIDER_TYPES, conforme descrito no IDBSchemaRowset na Referência do Programador OLE DB. Conjuntos de linhas de esquema são atribuídas em um mapa de esquema. Para obter informações sobre as entradas do mapa de esquema, consulte SCHEMA_ENTRY.

O Assistente de Provedor OLE DB, no Assistente de Objeto ATL, gera automaticamente o código para os conjuntos de linhas de esquema em seu projeto. (Por padrão, o assistente dá suporte aos conjuntos de linhas de esquema obrigatórios mencionados anteriormente). Ao criar um consumidor usando o Assistente de Objeto ATL, o assistente usa conjuntos de linhas de esquema para associar os dados corretos a um provedor. Se você não implementar seus conjuntos de linhas de esquema para fornecer os metadados corretos, o assistente não associará os dados corretos.

Para obter informações sobre como dar suporte a conjuntos de linhas de esquema em seu provedor, consulte Dando suporte a conjuntos de linhas do esquema.

Para obter mais informações sobre conjuntos de linhas de esquema, consulte Conjuntos de linhas de esquema na Referência do Programador OLE DB.

IDBSchemaRowsetImpl::CheckRestrictions

Verifica a validade das restrições em relação a um conjunto de linhas de esquema.

Sintaxe

HRESULT CheckRestrictions(REFGUID rguidSchema,
   ULONG cRestrictions,  const VARIANT rgRestrictions[]);

Parâmetros

rguidSchema
[in] Uma referência ao GUID do conjunto de linhas de esquema solicitado (por exemplo, DBSCHEMA_TABLES).

cRestrictions
[in] O número de restrições que o consumidor passou para o conjunto de linhas de esquema.

rgRestrictions
[in] Uma matriz de cRestrictions de comprimento de valores de restrição a serem definidos. Para obter mais informações, consulte a descrição do parâmetro rgRestrictions em SetRestrictions.

Comentários

Usa CheckRestrictions para verificar a validade das restrições em relação a um conjunto de linhas do esquema. Ele verifica as restrições para os conjuntos de linhas de esquema DBSCHEMA_TABLES, DBSCHEMA_COLUMNS e DBSCHEMA_PROVIDER_TYPES. Chame-o para determinar se a chamada de um consumidor para IDBSchemaRowset::GetRowset está correta. Se quiser dar suporte a conjuntos de linhas de esquema diferentes dos listados acima, crie sua própria função para realizar essa tarefa.

CheckRestrictions determina se o consumidor está chamando GetRowset com a restrição correta e o tipo de restrição correto (por exemplo, um VT_BSTR para uma cadeia de caracteres) a que o provedor dá suporte. Também determina se há suporte para o número correto de restrições. Por padrão, CheckRestrictions perguntará ao provedor, por meio da chamada SetRestrictions, a quais restrições ele dá suporte em um determinado conjunto de linhas. Em seguida, ele fará a comparação entre as restrições do consumidor com as suportadas pelo provedor e terá êxito ou falhará.

Para obter mais informações sobre conjuntos de linhas de esquema, consulte IDBSchemaRowset na Referência do programador OLE DB no SDK do Windows.

IDBSchemaRowsetImpl::CreateSchemaRowset

Implementa uma função de criador do objeto COM para o objeto especificado pelo parâmetro do modelo.

Sintaxe

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] Um IUnknown externo ao agregar, caso contrário, NULL.

cRestrictions
[in] A contagem de restrições aplicadas ao conjunto de linhas de esquema.

rgRestrictions
[in] Uma matriz de cRestrictionsVARIANTs a ser aplicada ao conjunto de linhas.

riid
[in] A interface para QueryInterface para a saída IUnknown.

cPropertySets
[in] O número de conjuntos de propriedades a serem definidos.

rgPropertySets
[in] Uma matriz de estruturas DBPROPSET que especificam as propriedades que estão sendo definidas.

ppRowset
[out] A IUnknown de saída solicitada por riid. Essa IUnknown é uma interface no objeto de conjunto de linhas de esquema.

pSchemaRowset
[out] Um ponteiro para uma instância da classe de conjunto de linhas de esquema. Normalmente, esse parâmetro não é usado, mas ele poderá ser usado se você precisar executar mais trabalho no conjunto de linhas de esquema antes de entregá-lo a um objeto COM. O tempo de vida de pSchemaRowset é limitado por ppRowset.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Essa função implementa um criador genérico para todos os tipos de conjuntos de linhas de esquema. Normalmente, o usuário não chama essa função. Ela é chamada pela implementação do mapa de esquema.

IDBSchemaRowsetImpl::SetRestrictions

Especifica a quais restrições você oferece suporta em um conjunto de linhas de esquema específico.

Sintaxe

void SetRestrictions(ULONG cRestrictions,
   GUID* /* rguidSchema */,
   ULONG* rgRestrictions);

Parâmetros

cRestrictions
[in] O número de restrições na matriz rgRestrictions e o número de GUIDs na matriz rguidSchema.

rguidSchema
[in] Uma matriz dos GUIDs dos conjuntos de linhas de esquema para os quais efetuar fetch de restrições. Cada elemento de matriz contém o GUID de um conjunto de linhas de esquema (por exemplo, DBSCHEMA_TABLES).

rgRestrictions
[in] Uma matriz de cRestrictions de comprimento de valores de restrição a serem definidos. Cada elemento corresponde às restrições no conjunto de linhas de esquema identificado pelo GUID. Se não houver suporte para um conjunto de linhas de esquema pelo provedor, o elemento será definido como zero. Caso contrário, o valor ULONG contém uma máscara de bits que representa as restrições com suporte nesse conjunto de linhas de esquema. Saiba mais sobre quais restrições correspondem a um determinado conjunto de linhas do esquema, consulte a tabela de GUIDs do conjunto de linhas do esquema em IDBSchemaRowset na Referência do programador do OLE DB no SDK do Windows.

Comentários

O objeto IDBSchemaRowset chama SetRestrictions para determinar a quais restrições você dá suporte em um conjunto de linhas de esquema específico (ele é chamado por GetSchemas por meio de um ponteiro upcasted). As restrições permitem que os consumidores busquem somente as linhas correspondentes (por exemplo, encontrar todas as colunas na tabela "MyTable"). As restrições são opcionais e, no caso em que nenhuma seja suportada (o padrão), todos os dados sempre serão retornados.

A implementação padrão desse método define os elementos da matriz rgRestrictions como 0. Substitua o padrão na classe de sessão para definir restrições diferentes do padrão.

Para obter informações sobre como implementar o suporte ao conjunto de linhas do esquema, consulte Conjuntos de linhas do esquema de suporte.

Para obter um exemplo de um provedor que é compatível com restrições de esquema, consulte o exemplo UpdatePV.

Para obter mais informações sobre conjuntos de linhas de esquema, consulte IDBSchemaRowset na Referência do programador OLE DB no SDK do Windows.

IDBSchemaRowsetImpl::GetRowset

Retorna um conjunto de linhas de esquema.

Sintaxe

STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
   REFGUID rguidSchema,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown **ppRowset);

Parâmetros

pUnkOuter
[in] Um IUnknown externo ao agregar; caso contrário, NULL.

rguidSchema
[in] Uma referência ao GUID do conjunto de linhas de esquema solicitado (por exemplo, DBSCHEMA_TABLES).

cRestrictions
[in] Uma contagem de restrições a serem aplicadas ao conjunto de linhas.

rgRestrictions
[in] Uma matriz de cRestrictionsVARIANTs que representa as restrições.

riid
[in] A IID a ser solicitada do conjunto de linhas de esquema recém-criado.

cPropertySets
[in] O número de conjuntos de propriedades a serem definidos.

rgPropertySets
[in/out] Uma matriz de estruturas DBPROPSET a serem definidas no conjunto de linhas do esquema recém-criado.

ppRowset
[out] Um ponteiro para a interface solicitada no conjunto de linhas do esquema recém-criado.

Comentários

Esse método exige que o usuário tenha um mapa de esquema na classe de sessão. Usando as informações de mapa de esquema, GetRowset cria um determinado objeto de conjunto de linhas se o parâmetro rguidSchema for igual a um dos GUIDs de entradas de mapa. Consulte SCHEMA_ENTRY para obter uma descrição da entrada do mapa.

Consulte IDBSchemaRowset::GetRowset no SDK do Windows.

IDBSchemaRowsetImpl::GetSchemas

Retorna uma lista de conjuntos de linhas de esquema acessíveis por IDBSchemaRowsetImpl::GetRowset.

Sintaxe

STDMETHOD (GetSchema s )(ULONG * pcSchemas,
   GUID ** prgSchemas,
   ULONG** prgRest);

Parâmetros

pcSchemas
[out] Um ponteiro para um ULONG que é preenchido com o número de esquemas.

prgSchemas
[out] Um ponteiro para uma matriz de GUIDs que é preenchida com um ponteiro para uma matriz de GUIDs de conjunto de linhas de esquema.

prgRest
[out] Um ponteiro para uma matriz de ULONGs que deve ser preenchida com a matriz de restrição.

Comentários

Esse método retorna uma matriz de todos os conjuntos de linhas de esquema com suporte do provedor. Consulte IDBSchemaRowset::GetSchemas no SDK do Windows.

A implementação dessa função exige que o usuário tenha um mapa de esquema na classe de sessão. Usando as informações do mapa de esquema, ele responde com a matriz de GUIDs para os esquemas no mapa. Isso representa os esquemas compatíveis com o provedor.

Confira também

Classes typedef e classes de conjunto de linhas de esquema
Dando suporte a conjuntos de linhas do esquema
SCHEMA_ENTRY
UpdatePV