Partilhar via


Coleções GetSchema e Schema

As classes Connection em cada um dos provedores gerenciados do .NET Framework implementam um método GetSchema que é usado para recuperar informações de esquema sobre o banco de dados que está conectado no momento. As informações de esquema retornadas do método GetSchema vêm na forma de um DataTablearquivo . O método GetSchema é um método sobrecarregado que fornece parâmetros opcionais para especificar a coleção de esquema a ser retornada e para restringir a quantidade de informações retornadas.

Especificando as coleções de esquema

O primeiro parâmetro opcional do método GetSchema é o nome da coleção que é especificado como uma cadeia de caracteres. Há dois tipos de coleções de esquema: coleções de esquema comuns que são comuns a todos os provedores e coleções de esquema específicas que são específicas para cada provedor.

Você pode consultar um provedor gerenciado do .NET Framework para determinar a lista de coleções de esquema suportadas chamando o método GetSchema sem argumentos ou com o nome da coleção de esquema "MetaDataCollections". Isso retornará uma DataTable com uma lista das coleções de esquema suportadas, o número de restrições que cada uma delas suporta e o número de partes de identificador que elas usam.

Exemplo de recuperação de coleções de esquema

Os exemplos a seguir demonstram como usar o GetSchema método do provedor de dados .NET Framework para a classe SQL Server SqlConnection para recuperar informações de esquema sobre todas as tabelas contidas no banco de dados de exemplo AdventureWorks :

Imports System.Data.SqlClient

Module Module1
   Sub Main()
      Dim connectionString As String = GetConnectionString()
      Using connection As New SqlConnection(connectionString)
         'Connect to the database then retrieve the schema information.
         connection.Open()
         Dim table As DataTable = connection.GetSchema("Tables")

         ' Display the contents of the table.
         DisplayData(table)
         Console.WriteLine("Press any key to continue.")
         Console.ReadKey()
      End Using
   End Sub

   Private Function GetConnectionString() As String
      ' To avoid storing the connection string in your code,
      ' you can retrieve it from a configuration file.
      Return "..."
   End Function

   Private Sub DisplayData(ByVal table As DataTable)
      For Each row As DataRow In table.Rows
         For Each col As DataColumn In table.Columns
            Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
         Next
         Console.WriteLine("============================")
      Next
   End Sub
End Module
using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
  static void Main()
  {
  string connectionString = GetConnectionString();
  using (SqlConnection connection = new SqlConnection(connectionString))
  {
   // Connect to the database then retrieve the schema information.
   connection.Open();
   DataTable table = connection.GetSchema("Tables");

   // Display the contents of the table.
   DisplayData(table);
   Console.WriteLine("Press any key to continue.");
   Console.ReadKey();
   }
 }

  private static string GetConnectionString()
  {
   // To avoid storing the connection string in your code,
   // you can retrieve it from a configuration file.
   return "...";
  }

  private static void DisplayData(System.Data.DataTable table)
  {
     foreach (System.Data.DataRow row in table.Rows)
     {
        foreach (System.Data.DataColumn col in table.Columns)
        {
           Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
        }
     Console.WriteLine("============================");
     }
  }
}

Consulte também