GetSchema e raccolte di schemi

Si applica a: .NET Framework .NET .NET Standard

Scarica ADO.NET

Le classi SqlConnection nel provider di dati Microsoft SqlClient per SQL Server implementano un metodo GetSchema che viene usato per recuperare informazioni sullo schema del database attualmente connesso. Inoltre, le informazioni sullo schema vengono restituite dal metodo GetSchema sotto forma di DataTable. GetSchema è un metodo in overload che fornisce parametri facoltativi per specificare la raccolta di schemi da restituire e per limitare la quantità di informazioni restituite.

Specifica delle raccolte di schemi

Il primo parametro facoltativo del metodo GetSchema è il nome della raccolta specificato come stringa. Sono disponibili due tipi di raccolte di schemi: raccolte di schemi comuni a tutti i provider e raccolte di schemi specifici, ovvero schemi specifici per ciascun provider.

È possibile eseguire una query nel provider di dati Microsoft SqlClient per SQL Server per determinare l'elenco delle raccolte di schemi supportate chiamando il metodo GetSchema senza argomenti oppure con il nome della raccolta di schemi "MetaDataCollections". In questo modo verrà restituito un oggetto DataTable con un elenco delle raccolte di schemi supportati, il numero delle restrizioni supportate da ciascuna raccolta e il numero di parti identificatore usate.

Esempio di recupero delle raccolte di schemi

Gli esempi seguenti illustrano come usare il metodo GetSchema del provider di dati Microsoft SqlClient per la classe SqlConnection di SQL Server per recuperare informazioni sullo schema relative a tutte le tabelle contenute nel database di esempio AdventureWorks:

using System;
using System.Data;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main(string[] args)
    {
        string connectionString = "Data Source = localhost; Integrated Security = true; Initial Catalog = AdventureWorks";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            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 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("============================");
        }
    }
}

Vedi anche