Метод GetSchema и коллекции схем

Применимо: платформа .NET Framework .NET Standard

Скачать ADO.NET

Классы SqlConnection в поставщике данных Microsoft SqlClient для SQL Server реализуют метод GetSchema, который используется для получения сведений о схеме базы данных, с которой в данный момент установлено соединение, и метод GetSchema возвращает сведения о схеме в виде объекта DataTable. GetSchema — перегружаемый метод, содержащий необязательные параметры для указания возвращаемой коллекции схем и ограничения объема возвращаемых сведений.

Указание коллекций схем

Первым необязательным параметром метода GetSchema является имя коллекции, указанное в виде строки. Существует два типа коллекций схем: стандартные (общие для всех поставщиков) и специальные (определенные для каждого поставщика).

Можно запросить поставщик данных Microsoft SqlClient для SQL Server для определения списка поддерживаемых коллекций схем, вызвав метод GetSchema без аргументов или с именем коллекции схем "MetaDataCollections". При этом будет возвращена DataTable со списком поддерживаемых коллекций схем, число ограничений, которые каждая из них поддерживает, и число идентификационных частей, которые в них используются.

Пример извлечения коллекций схем

В следующем примере демонстрируется использование метода GetSchema класса SqlConnection поставщика данных Microsoft SqlClient для SQL Server для получения сведений схем обо всех таблицах, содержащихся в образце базы данных 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("============================");
        }
    }
}

См. также