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 cRestrictions
VARIANTs 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 cRestrictions
VARIANTs 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