Dela via


GetSchema- och schemasamlingar

Anslut ion-klasserna i var och en av .NET Framework-hanterade providers implementerar en GetSchema-metod som används för att hämta schemainformation om databasen som för närvarande är ansluten, och schemainformationen som returneras från Metoden GetSchema kommer i form av en DataTable. Metoden GetSchema är en överbelastad metod som innehåller valfria parametrar för att ange vilken schemasamling som ska returneras och begränsa mängden information som returneras.

Ange schemasamlingarna

Den första valfria parametern för metoden GetSchema är samlingsnamnet som anges som en sträng. Det finns två typer av schemasamlingar: vanliga schemasamlingar som är gemensamma för alla leverantörer och specifika schemasamlingar som är specifika för varje provider.

Du kan fråga en .NET Framework-hanterad provider för att fastställa listan över schemasamlingar som stöds genom att anropa metoden GetSchema utan argument eller med schemasamlingsnamnet "MetaDataCollections". Detta returnerar en DataTable med en lista över de schemasamlingar som stöds, antalet begränsningar som de stöder och antalet identifierardelar som de använder.

Exempel på hämtning av schemasamlingar

Följande exempel visar hur du använder GetSchema metoden för .NET Framework Data Provider för SQL Server-klassen SqlConnection för att hämta schemainformation om alla tabeller som finns i AdventureWorks-exempeldatabasen:

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("============================");  
     }  
  }  
}  

Se även