Lingua

SqlConnection.GetSchema Metodo

Definizione

Overload

Nome Descrizione
GetSchema()

Restituisce informazioni sullo schema per l'origine dati di questo SqlConnectionoggetto . Per altre informazioni sugli schemi, vedere SQL Server Raccolte di schemi.

GetSchema(String)

Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema.

GetSchema(String, String[])

Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema e la matrice di stringhe specificata per i valori di restrizione.

GetSchema()

Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnection.cs

Restituisce informazioni sullo schema per l'origine dati di questo SqlConnectionoggetto . Per altre informazioni sugli schemi, vedere SQL Server Raccolte di schemi.

public:
 override System::Data::DataTable ^ GetSchema();
public override System.Data.DataTable GetSchema();
abstract member GetSchema : unit -> System.Data.DataTable
override this.GetSchema : unit -> System.Data.DataTable
override this.GetSchema : unit -> System.Data.DataTable
Public Overrides Function GetSchema () As DataTable

Valori restituiti

Oggetto DataTable contenente informazioni sullo schema.

Si applica a

GetSchema(String)

Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnection.cs

Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema.

public:
 override System::Data::DataTable ^ GetSchema(System::String ^ collectionName);
public override System.Data.DataTable GetSchema(string collectionName);
abstract member GetSchema : string -> System.Data.DataTable
override this.GetSchema : string -> System.Data.DataTable
override this.GetSchema : string -> System.Data.DataTable
Public Overrides Function GetSchema (collectionName As String) As DataTable

Parametri

collectionName
String

Specifica il nome dello schema da restituire.

Valori restituiti

Oggetto DataTable contenente informazioni sullo schema.

Eccezioni

collectionName è specificato come Null.

Esempio

Prima di eseguire l'esempio, è necessario creare il database di esempio usando il Transact-SQL seguente:

USE [master]
GO

CREATE DATABASE [MySchool]
GO

USE [MySchool]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Course](
  [CourseID] [nvarchar](10) NOT NULL,
  [Year] [smallint] NOT NULL,
  [Title] [nvarchar](100) NOT NULL,
  [Credits] [int] NOT NULL,
  [DepartmentID] [int] NOT NULL,
  CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED (
    [CourseID] ASC,
    [Year] ASC
  ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Department](
  [DepartmentID] [int] IDENTITY(1,1) NOT NULL,
  [Name] [nvarchar](50) NOT NULL,
  [Budget] [money] NOT NULL,
  [StartDate] [datetime] NOT NULL,
  [Administrator] [int] NULL,
  CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED (
    [DepartmentID] ASC
  ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID])
  VALUES (N'C1045', 2012, N'Calculus', 4, 7)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID])
  VALUES (N'C1061', 2012, N'Physics', 4, 1)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID])
  VALUES (N'C2021', 2012, N'Composition', 3, 2)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID])
  VALUES (N'C2042', 2012, N'Literature', 4, 2)
SET IDENTITY_INSERT [dbo].[Department] ON
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator])
  VALUES (1, N'Engineering', 350000.0000, CAST(0x0000999C00000000 AS DateTime), 2)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator])
  VALUES (2, N'English', 120000.0000, CAST(0x0000999C00000000 AS DateTime), 6)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator])
  VALUES (4, N'Economics', 200000.0000, CAST(0x0000999C00000000 AS DateTime), 4)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator])
  VALUES (7, N'Mathematics', 250024.0000, CAST(0x0000999C00000000 AS DateTime), 3)
SET IDENTITY_INSERT [dbo].[Department] OFF

ALTER TABLE [dbo].[Course]
WITH CHECK ADD
  CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID])
    REFERENCES [dbo].[Department] ([DepartmentID])
GO

ALTER TABLE [dbo].[Course]
CHECK CONSTRAINT [FK_Course_Department]
GO

Come ottenere informazioni sullo schema dal database include C# e Visual Basic versioni di questo esempio di codice in un progetto Visual Studio.

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

class Program
{
    static void Main(string[] args)
    {
        using (SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=MySchool;Integrated Security=True;"))
        {
            conn.Open();

            // Get the Meta Data for Supported Schema Collections  
            DataTable metaDataTable = conn.GetSchema("MetaDataCollections");

            Console.WriteLine("Meta Data for Supported Schema Collections:");
            ShowDataTable(metaDataTable, 25);
            Console.WriteLine();

            // Get the schema information of Databases in your instance  
            DataTable databasesSchemaTable = conn.GetSchema("Databases");

            Console.WriteLine("Schema Information of Databases:");
            ShowDataTable(databasesSchemaTable, 25);
            Console.WriteLine();

            // First, get schema information of all the tables in current database;  
            DataTable allTablesSchemaTable = conn.GetSchema("Tables");

            Console.WriteLine("Schema Information of All Tables:");
            ShowDataTable(allTablesSchemaTable, 20);
            Console.WriteLine();

            // You can specify the Catalog, Schema, Table Name, Table Type to get   
            // the specified table(s).  
            // You can use four restrictions for Table, so you should create a 4 members array.  
            String[] tableRestrictions = new String[4];

            // For the array, 0-member represents Catalog; 1-member represents Schema;   
            // 2-member represents Table Name; 3-member represents Table Type.   
            // Now we specify the Table Name of the table what we want to get schema information.  
            tableRestrictions[2] = "Course";

            DataTable courseTableSchemaTable = conn.GetSchema("Tables", tableRestrictions);

            Console.WriteLine("Schema Information of Course Tables:");
            ShowDataTable(courseTableSchemaTable, 20);
            Console.WriteLine();

            // First, get schema information of all the columns in current database.  
            DataTable allColumnsSchemaTable = conn.GetSchema("Columns");

            Console.WriteLine("Schema Information of All Columns:");
            ShowColumns(allColumnsSchemaTable);
            Console.WriteLine();

            // You can specify the Catalog, Schema, Table Name, Column Name to get the specified column(s).  
            // You can use four restrictions for Column, so you should create a 4 members array.  
            String[] columnRestrictions = new String[4];

            // For the array, 0-member represents Catalog; 1-member represents Schema;   
            // 2-member represents Table Name; 3-member represents Column Name.   
            // Now we specify the Table_Name and Column_Name of the columns what we want to get schema information.  
            columnRestrictions[2] = "Course";
            columnRestrictions[3] = "DepartmentID";

            DataTable departmentIDSchemaTable = conn.GetSchema("Columns", columnRestrictions);

            Console.WriteLine("Schema Information of DepartmentID Column in Course Table:");
            ShowColumns(departmentIDSchemaTable);
            Console.WriteLine();

            // First, get schema information of all the IndexColumns in current database  
            DataTable allIndexColumnsSchemaTable = conn.GetSchema("IndexColumns");

            Console.WriteLine("Schema Information of All IndexColumns:");
            ShowIndexColumns(allIndexColumnsSchemaTable);
            Console.WriteLine();

            // You can specify the Catalog, Schema, Table Name, Constraint Name, Column Name to   
            // get the specified column(s).  
            // You can use five restrictions for Column, so you should create a 5 members array.  
            String[] indexColumnsRestrictions = new String[5];

            // For the array, 0-member represents Catalog; 1-member represents Schema;   
            // 2-member represents Table Name; 3-member represents Constraint Name;4-member represents Column Name.   
            // Now we specify the Table_Name and Column_Name of the columns what we want to get schema information.  
            indexColumnsRestrictions[2] = "Course";
            indexColumnsRestrictions[4] = "CourseID";

            DataTable courseIdIndexSchemaTable = conn.GetSchema("IndexColumns", indexColumnsRestrictions);

            Console.WriteLine("Index Schema Information of CourseID Column in Course Table:");
            ShowIndexColumns(courseIdIndexSchemaTable);
            Console.WriteLine();
        }

        Console.WriteLine("Please press any key to exit...");
        Console.ReadKey();
    }

    private static void ShowDataTable(DataTable table, Int32 length)
    {
        foreach (DataColumn col in table.Columns)
        {
            Console.Write("{0,-" + length + "}", col.ColumnName);
        }
        Console.WriteLine();

        foreach (DataRow row in table.Rows)
        {
            foreach (DataColumn col in table.Columns)
            {
                if (col.DataType.Equals(typeof(DateTime)))
                {
                    Console.Write("{0,-" + length + ":d}", row[col]);
                }
                else if (col.DataType.Equals(typeof(Decimal)))
                {
                    Console.Write("{0,-" + length + ":C}", row[col]);
                }
                else {
                    Console.Write("{0,-" + length + "}", row[col]);
                }
            }
            Console.WriteLine();
        }
    }

    private static void ShowDataTable(DataTable table)
    {
        ShowDataTable(table, 14);
    }

    private static void ShowColumns(DataTable columnsTable)
    {
        var selectedRows = from info in columnsTable.AsEnumerable()
                           select new
                           {
                               TableCatalog = info["TABLE_CATALOG"],
                               TableSchema = info["TABLE_SCHEMA"],
                               TableName = info["TABLE_NAME"],
                               ColumnName = info["COLUMN_NAME"],
                               DataType = info["DATA_TYPE"]
                           };

        Console.WriteLine("{0,-15}{1,-15}{2,-15}{3,-15}{4,-15}", "TableCatalog", "TABLE_SCHEMA",
            "TABLE_NAME", "COLUMN_NAME", "DATA_TYPE");
        foreach (var row in selectedRows)
        {
            Console.WriteLine("{0,-15}{1,-15}{2,-15}{3,-15}{4,-15}", row.TableCatalog,
                row.TableSchema, row.TableName, row.ColumnName, row.DataType);
        }
    }

    private static void ShowIndexColumns(DataTable indexColumnsTable)
    {
        var selectedRows = from info in indexColumnsTable.AsEnumerable()
                           select new
                           {
                               TableSchema = info["table_schema"],
                               TableName = info["table_name"],
                               ColumnName = info["column_name"],
                               ConstraintSchema = info["constraint_schema"],
                               ConstraintName = info["constraint_name"],
                               KeyType = info["KeyType"]
                           };

        Console.WriteLine("{0,-14}{1,-11}{2,-14}{3,-18}{4,-16}{5,-8}", "table_schema", "table_name", "column_name", "constraint_schema", "constraint_name", "KeyType");
        foreach (var row in selectedRows)
        {
            Console.WriteLine("{0,-14}{1,-11}{2,-14}{3,-18}{4,-16}{5,-8}", row.TableSchema,
                row.TableName, row.ColumnName, row.ConstraintSchema, row.ConstraintName, row.KeyType);
        }
    }
}

Commenti

Potrebbero essere necessarie le informazioni sullo schema del database, delle tabelle o delle colonne. Questo esempio:

  • Usa GetSchema per ottenere informazioni sullo schema.
  • Usare le restrizioni dello schema per ottenere le informazioni specificate.
  • Ottiene informazioni sullo schema del database, delle tabelle e di alcune colonne.

Si applica a

GetSchema(String, String[])

Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnectionHelper.cs
Origine:
SqlConnection.cs

Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema e la matrice di stringhe specificata per i valori di restrizione.

public:
 override System::Data::DataTable ^ GetSchema(System::String ^ collectionName, cli::array <System::String ^> ^ restrictionValues);
public override System.Data.DataTable GetSchema(string collectionName, string[] restrictionValues);
abstract member GetSchema : string * string[] -> System.Data.DataTable
override this.GetSchema : string * string[] -> System.Data.DataTable
override this.GetSchema : string * string[] -> System.Data.DataTable
Public Overrides Function GetSchema (collectionName As String, restrictionValues As String()) As DataTable

Parametri

collectionName
String

Specifica il nome dello schema da restituire.

restrictionValues
String[]

Set di valori di restrizione per lo schema richiesto.

Valori restituiti

Oggetto DataTable contenente informazioni sullo schema.

Eccezioni

collectionName è specificato come Null.

Esempio

Per un esempio di codice che GetSchema()illustra , vedere GetSchema().

Commenti

Il restrictionValues parametro può fornire n profondità di valori, specificati dalla raccolta di restrizioni per una raccolta specifica. Per impostare i valori per una determinata restrizione e non impostare i valori di altre restrizioni, è necessario impostare le restrizioni precedenti su null e quindi inserire il valore appropriato in per la restrizione per cui si vuole specificare un valore.

Un esempio è l'insieme "Tables". Se l'insieme "Tables" ha tre restrizioni:-database, proprietario e nome tabella- e si desidera recuperare solo le tabelle associate al proprietario "Carl", è necessario passare i valori seguenti: null, "Carl". Se non viene passato un valore di restrizione, per tale restrizione vengono usati i valori predefiniti. Si tratta dello stesso mapping del passaggio di null, che è diverso dal passaggio di una stringa vuota per il valore del parametro. In tal caso, la stringa vuota ("") viene considerata il valore per il parametro specificato.

Vedi anche

Si applica a