Partilhar via


Obtenção de metadados com conjuntos de linhas do esquema

Às vezes, você precisa obter informações sobre o provedor, conjunto de linhas, tabela, colunas ou outras informações do banco de dados sem abrir o conjunto de linhas. Dados sobre a estrutura do banco de dados são chamados de metadados e podem ser recuperados por um número de métodos diferentes. Um método é usar conjuntos de linhas do esquema.

OLE DB modelos fornecem um conjunto de classes para recuperar informações de esquema. Essas classes criar conjuntos de linhas do esquema pré-definido e estão listados na Classes de conjunto de linhas de esquema e Typedef.

ObservaçãoObservação

Se você estiver usando o OLAP e alguns de seus conjuntos de linhas não são suportados pelas classes de conjunto de linhas do esquema (por exemplo, se você tiver um número variável de colunas), você deve considerar o uso CManualAccessor ou CDynamicAccessor. Você pode percorrer as colunas e usar instruções case para lidar com os tipos de dados possíveis para cada coluna.

SQL de ANSI define um modelo de esquema do catálogo para armazenamentos de dados; OLE DB utiliza esse modelo. Nesse modelo, catálogos (bancos de dados) contêm esquemas e os esquemas contêm tabelas.

  • Catálogo de um catálogo é outro nome para um banco de dados. É uma coleção de esquemas relacionadas. Para listar os catálogos (bancos de dados) que pertencem a uma determinada fonte de dados, use CCatalog. Como muitos bancos de dados têm apenas um catálogo, o metadados é chamado às vezes, apenas informações de esquema.

  • Esquema um esquema é uma coleção de objetos de banco de dados que são de propriedade ou ter sido criado por um usuário específico. Para listar os esquemas de um determinado usuário, use CSchemata.

    Em termos de de Microsoft SQL Server e ODBC 2. x, um esquema é um proprietário (por exemplo, dbo é um nome comum de esquema). Além disso, o SQL Server armazena metadados em um conjunto de tabelas: uma tabela contém uma lista de todas as tabelas e outra tabela contém uma lista de todas as colunas. Não há nenhum equivalente para um esquema em um banco de dados do Microsoft Access.

  • Tabela tabelas são conjuntos de colunas organizadas em ordens específicas. Para listar as tabelas definidas em um determinado de catálogo (banco de dados) e informações sobre essas tabelas, use CTables).

Restrictions

Quando você consulta para obter informações de esquema, você pode usar restrições para especificar o tipo de informação nos quais está interessado. Você pode pensar em restrições como um filtro ou qualificador de uma consulta. Por exemplo, na consulta:

SELECT * FROM authors where l_name = 'pivo'

l_nameé uma restrição. Este é um exemplo muito simples com apenas uma restrição; as classes de conjunto de linhas de esquema oferecem suporte a várias restrições.

O classes de typedef de conjunto de linhas do esquema encapsular todos os conjuntos de esquema de banco de dados OLE para que você possa acessar um conjunto de linhas do esquema exatamente como qualquer outro conjunto de linhas instanciando e abri-lo. Por exemplo, a classe typedef CColumns é definido como:

CRestrictions<CAccessor<CColumnsInfo>

O CRestrictions classe fornece o suporte de restrição. Depois de criar uma instância do conjunto de linhas do esquema, chamada CRestrictions::Open. Esse método retorna um conjunto de resultados com base nas restrições do que você especificar.

Para especificar as restrições, consulte Apêndice b: Conjuntos de linhas do esquema e consultar o conjunto de linhas que você está usando. Por exemplo, CColumns corresponde do Conjunto de linhas de colunas; Esse tópico lista as colunas de restrição no conjunto de linhas de colunas: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, NOME DA COLUNA. Você deve seguir a ordem de especificar as restrições.

Assim, por exemplo, se você quiser restringir pelo nome da tabela, observe que TABLE_NAME é a terceira coluna de restrição e então chamar Abrir, especificando o nome da tabela desejada como terceiro parâmetro da restrição, conforme mostrado no exemplo a seguir.

Usar conjuntos de linhas do esquema

  1. Você deve incluir o arquivo de cabeçalho Atldbsch.h (Obviamente, você precisa Atldbcli.h para suporte também ao consumidor).

  2. Instanciar um objeto de conjunto de linhas do esquema em que o consumidor ou do documento o arquivo de cabeçalho. Se desejar que as informações da tabela, declare uma CTables de objeto; Se você deseja informações de coluna, declare uma CColumns objeto. Este exemplo mostra como recuperar as colunas na tabela Autores:

    CDataSource ds;
    ds.Open();
    CSession ss;
    ss.Open();
    CColumns ColumnSchemaRowset;
    // TABLE_NAME is the third restriction column, so
    // specify "authors" as the third restriction parameter:
    hr = ColumnSchemaRowset.Open(ss, NULL, NULL, "authors");
    hr = ColumnSchemaRowset.MoveFirst();
    while (hr == S_OK)
    {
       hr = ColumnSchemaRowset.MoveNext();
    }
    
  3. Para buscar as informações, acessar o membro de dados apropriado do objeto de conjunto de linhas do esquema, por exemplo, ColumnSchemaRowset.m_szColumnName. Isso corresponde ao nome da coluna. Para ver qual coluna de banco de dados OLE que cada membro de dados corresponde ao, consulte CColumns.

Para a referência do conjunto de linhas do esquema, classes de typedef fornecidos nos modelos OLE DB (consulte Classes de conjunto de linhas de esquema e Typedef).

Para obter mais informações sobre conjuntos de linhas de esquema de banco de dados OLE, incluindo colunas de restrição, consulte Apêndice b: Conjuntos de linhas do esquema na referência do programador de banco de dados OLE.

Para obter exemplos mais complexos de como usar as classes de conjunto de linhas do esquema, consulte o CatDB e DBViewer samples.

Para obter informações sobre o suporte do provedor para conjuntos de linhas do esquema, consulte Suporte a conjuntos de linhas do esquema.

Consulte também

Conceitos

Usar acessadores