次の方法で共有


スキーマとスキーマ コレクションを取得する

適用対象: .NET Framework .NET .NET Standard

ADO.NET のダウンロード

Microsoft SqlClient Data Provider for SQL Server の SqlConnection クラスには GetSchema が実装されています。これを使用すると、現在接続されているデータベースに関するスキーマ情報を取得できます。また、GetSchema メソッドからは DataTable の形式でスキーマ情報が返されます。 GetSchema メソッドはオーバーロードされたメソッドであり、オプションのパラメーターで、取得するスキーマ コレクションを指定し、返される情報の量を制限することができます。

スキーマ コレクションの指定

GetSchema メソッドの最初のオプション パラメーターは、文字列として指定されるコレクションの名前です。 スキーマ コレクションには 2 種類あります。すべてのプロバイダーに共通している一般的なスキーマ コレクションと、各プロバイダーによって固有のスキーマ コレクションです。

Microsoft SqlClient Data Provider for SQL Server に対してクエリを実行し、サポートされているスキーマ コレクションの一覧を確認するには、引数を指定せずに、またはスキーマ コレクション名 "MetaDataCollections" を指定して GetSchema メソッドを呼び出します。 これにより、サポートされるスキーマ コレクションの一覧、それぞれがサポートする制限数、および使用する識別子部分の数と共に、DataTable が返されます。

スキーマ コレクションの取得例

Microsoft SqlClient Data Provider for SQL Server の SqlConnection クラスの GetSchema メソッドを使って、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("============================");
        }
    }
}

関連項目