Share via


GetSchema- en schemaverzamelingen

De Verbinding maken ionklassen in elk van de beheerde .NET Framework-providers implementeren een GetSchema-methode die wordt gebruikt om schemagegevens op te halen over de database die momenteel is verbonden, en de schemagegevens die worden geretourneerd uit de methode GetSchema, worden geleverd in de vorm van een DataTable. De Methode GetSchema is een overbelaste methode die optionele parameters biedt voor het opgeven van de schemaverzameling die moet worden geretourneerd en het beperken van de hoeveelheid geretourneerde informatie.

De schemaverzamelingen opgeven

De eerste optionele parameter van de Methode GetSchema is de naam van de verzameling die is opgegeven als een tekenreeks. Er zijn twee typen schemaverzamelingen: algemene schemaverzamelingen die gemeenschappelijk zijn voor alle providers en specifieke schemaverzamelingen die specifiek zijn voor elke provider.

U kunt een door .NET Framework beheerde provider opvragen om de lijst met ondersteunde schemaverzamelingen te bepalen door de GetSchema-methode zonder argumenten aan te roepen of met de naam van de schemaverzameling 'MetaDataCollections'. Hiermee wordt een DataTable lijst geretourneerd met een lijst met ondersteunde schemaverzamelingen, het aantal beperkingen dat ze elk ondersteunen en het aantal id-onderdelen dat ze gebruiken.

Voorbeeld van het ophalen van schemaverzamelingen

In de volgende voorbeelden ziet u hoe u de GetSchema methode van de .NET Framework-gegevensprovider voor de SQL Server-klasse SqlConnection gebruikt om schemagegevens op te halen over alle tabellen in de AdventureWorks-voorbeelddatabase :

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 "Data Source=(local);Database=AdventureWorks;" _  
         & "Integrated Security=true;"  
   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 "Data Source=(local);Database=AdventureWorks;" +  
      "Integrated Security=true;";  
  }  
  
  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("============================");  
     }  
  }  
}  

Zie ook