Compartilhar 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.

Modelos OLE DB fornecem um conjunto de classes para recuperar as informações do esquema; essas classes criar conjuntos de linhas do esquema predefinido e estão listadas em Classes de conjunto de linhas de esquema e classes de TypeDef.

Observaçã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 de esquema (por exemplo, ter um número variável de colunas) , Você deve considerar o uso de CManualAccessor ou CDynamicAccessor. Você pode rolar através das colunas e usar maiúsculas instruções para lidar com os tipos de dados possíveis para cada coluna.

Modelo de catálogo ou o esquema

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

  • Catálogo   Um catálogo é outro nome para um banco de dados.Ele é uma coleção de esquemas relacionadas.Para lista catálogos (bancos de dados) que pertencem a uma fonte de dados específico, use CCatalog.Como muitos bancos de dados têm apenas um catálogo, metadados, às vezes, simplesmente é chamado de 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 lista esquemas pertencentes a um determinado usuário, use CSchemata.

    Em termos de Microsoft SQL servidor e ODBC 2.x, um esquema é um proprietário (por exemplo, dbo é um nome de esquema comuns).Além disso, o SQL servidor 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 a um esquema em um banco de dados do Microsoft acesso.

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

Restrições

Quando você consulta para obter informações de esquema, você pode usar restrições para especificar o tipo de informação no qual você está interessado.Você pode pensar em restrições sistema autônomo qualificador em uma consulta ou filtro.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 esquema dão suporte a várias restrições.

The classes de typedef de conjunto de linhas do esquema encapsular todos os conjuntos de linhas da esquema de banco de dados OLE DB para que você possa acesso um conjunto de linhas de esquema como conjunto linhas, instanciar e abri-lo.Por exemplo, o typedef classe CColumns é definida sistema autônomo:

CRestrictions<CAccessor<CColumnsInfo>

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

Para especificar as restrições, consulte o Apêndice B: Conjuntos de linhas de esquema e o conjunto de linhas que você está usando a pesquisa.Por exemplo, CColumns corresponde ao Conjunto de linhas COLUMNS; esse tópico listas as colunas de restrição no conjunto de linhas COLUMNS: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, NOME_COLUNA.Você deve seguir a ordem de especificar as restrições.

Assim, por exemplo, se você quiser restringir o nome da tabela, observe que TABLE_NAME é a terceira coluna de restrição e chamamos em aberto, especificando o nome de tabela desejada sistema autônomo o 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 de consumidor também).

  2. Instanciar um objeto de conjunto de linhas de esquema do consumidor ou o documento arquivo de cabeçalho.Se desejar que as informações da tabela, declare um CTables object; se você desejar que informações de coluna, declare um 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 de esquema, por exemplo, ColumnSchemaRowset.m_szColumnName. Isso corresponde a COLUMN_NAME.Para ver a coluna de OLE DB que cada membro de dados corresponde ao, consulte CColumns.

Para a referência do conjunto de linhas de esquema, classes de typedef fornecida em OLE DB modelos (consulte Classes de conjunto de linhas de esquema e classes de TypeDef).

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

Para obter exemplos mais complexos de como usar classes de conjunto de linhas de esquema, consulte o CatDB and DBViewer amostras.

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

Consulte também

Conceitos

Usar acessadores