GetSchema y colecciones de esquema
Las clases Connection de cada uno de los proveedores administrados de .NET Framework implementan un método GetSchema que sirve para recuperar la información de esquema relativa a la base de datos que está conectada en ese momento. La información de esquema devuelta del método GetSchema se genera en forma de DataTable. El método GetSchema es un método sobrecargado que ofrece 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 un proveedor administrado de .NET Framework para determinar la lista de colecciones de esquemas admitidas mediante la llamada al método GetSchema sin argumentos, o 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 siguientes ejemplos se muestra cómo utilizar el método GetSchema del proveedor de datos .NET Framework para la clase SqlConnection de SQL Server para recuperar información de esquema de todas las tablas contenidas en la base de datos de ejemplo AdventureWorks:
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim connectionString As String = GetConnectionString()
Using connection As New SqlConnection(connectionString)
'Connect to the database then retrieve the schema information.
connection.Open()
Dim table As DataTable = connection.GetSchema("Tables")
' Display the contents of the table.
DisplayData(table)
Console.WriteLine("Press any key to continue.")
Console.ReadKey()
End Using
End Sub
Private Function GetConnectionString() As String
' To avoid storing the connection string in your code,
' you can retrieve it from a configuration file.
Return "..."
End Function
Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
Next
Console.WriteLine("============================")
Next
End Sub
End Module
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = GetConnectionString();
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Connect to the database then retrieve the schema information.
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 string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "...";
}
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("============================");
}
}
}