Colecciones GetSchema y Schema
Se aplica a: .NET Framework .NET .NET Standard
Las clases SqlConnection del proveedor de datos SqlClient de Microsoft para SQL Server implementan un método GetSchema que se usa para recuperar la información del esquema sobre la base de datos que está actualmente conectada, y la información del esquema que devuelve el método GetSchema tiene el formato de un objeto DataTable. El método GetSchema es un método sobrecargado que proporciona parámetros opcionales para especificar la colección de esquemas que se devolverá y restringe la cantidad de información devuelta.
Especificación de las colecciones de esquemas
El primer parámetro opcional del método GetSchema es el nombre de la colección que se especifica como una cadena. Existen dos tipos de colecciones de esquemas: comunes, que son comunes a todos los proveedores, y específicas, que son específicas de cada proveedor.
Puede consultar el proveedor de datos SqlClient de Microsoft para SQL Server para determinar la lista de colecciones de esquemas admitidas mediante la llamada al método GetSchema sin argumentos, o bien con el nombre de colección de esquemas "MetaDataCollections". Esto devolverá una DataTable con una lista de colecciones de esquemas admitidas, el número de restricciones que admite cada una y el número de partes de identificador que emplean.
Ejemplo de recuperación de colecciones de esquemas
En los ejemplos siguientes se muestra cómo usar el método GetSchema de la clase SqlConnection del proveedor de datos SqlClient de Microsoft para SQL Server para recuperar información del esquema de todas las tablas contenidas en la base de datos de ejemplo 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("============================");
}
}
}