Cómo recuperar el esquema de columna mediante el método GetSchemaTable de DataReader y Visual C#.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 310107 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E310107
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se muestra cómo utilizar el método GetSchemaTable del objeto DataReader de ADO.NET para recuperar información de esquema de columna. Otro nombre de esquema de una columna es sus propiedades de campo. Información de esquema de columna incluye la siguiente información acerca de la columna:
  • Nombre
  • Tipo de datos
  • Tamaño
  • Si la columna es un campo de clave principal
  • Si la columna es un Autonumérico (AutoIncrement) campo
El método GetSchemaTable devuelve una propiedad de DataTable que contiene el esquema de columna para un DataReader. DataTable contiene una fila por cada campo del conjunto de resultados. Cada columna se asigna a una propiedad del campo en el conjunto de resultados. La propiedad ColumnName de la columna de tabla de datos es el nombre de la propiedad del campo, como la propiedad ColumnName, DataType, ColumnSize, IsKeyColumno IsAutoIncrement . El valor de la columna de tabla de datos es el valor de la propiedad del campo, como, por ejemplo, el valor de nombre de la propiedad ColumnName .
Nota Para obtener la información de clave principal, incluido si es un campo parte de una clave principal y si es un campo AutoIncrement , debe establecer el valor de CommandBehavior del DataReader para CommandBehavior.KeyInfo.

Puede utilizar el método GetSchemaTable con ya sea la de OLE DB.NET para OLE DB o el SQL.NET Proveedor. El método OleDbDataReader.GetSchemaTable se asigna al método IColumnsRowset:: GetColumnsRowset de OLE DB. El método SqlDataReader.GetSchemaTable no utiliza una capa de proveedor OLE DB.

De la nota, a menos que utilice explícitamente el método GetSchemaTable del objeto , el objeto DataReader devuelve el esquema de columna. Además, si utiliza GetSchemaTable para recuperar el esquema de columna, no se puede actualizar el DataReader. El objeto DataReader siempre recupera una secuencia de sólo lectura, sólo hacia delante de los datos de un base de datos.

Cuando se utiliza el método GetSchemaTable

  • El objeto SqlConnection no admite la recuperación de información de esquema de SQL Server en un método análogo al método GetOleDbSchemaTable del objeto OleDbConnection . El método GetSchemaTable del objeto de la clase SqlDataReader proporciona una forma sencilla de obtener el esquema de columna información de SQL Server.
  • Aunque puede devolver el método GetOleDbSchemaTable del objeto OleDbConnection de base de datos, la tabla y la información de esquema de columna, es posible que el método GetSchemaTable del objeto DataReader es más fácil de usar para recuperar sólo columna información de esquema.
  • Puede utilizar el método GetSchemaTable para crear un nuevo objeto DataTable basada en esquema de una tabla de datos de una propiedad existente mientras personaliza los nombres de columna y otros atributos de columna. Código de ejemplo que muestra cómo utilizar GetSchemaTable para definir una nueva tabla, consulte la "Visual Studio ejemplos: Fitch y Mather 7.0 ejecutar SQL consulta"tema en el Visual Studio de Microsoft.NET en línea Documentación de ayuda.

Recuperar el esquema de columna con OLE DB.NET para OLE DB

Este ejemplo muestra la información de las columnas (campo de esquema Propiedades) de la tabla empleados de Neptuno de SQL Server base de datos.

Tenga en cuenta que cuando se utiliza OLE DB.NET para ODBC, utilizar el método GetSchemaTable del objeto OleDbDataReader .
  1. Iniciar Visual Studio.NET y, a continuación, cree un nuevo de Visual C# Proyecto de aplicación de consola. Class1.cs se crea de forma predeterminada.
  2. Abra la ventana de código de Class1. Pegue el código siguiente en la parte superior de la ventana de código por encima de la declaración de espacio de nombres :
    using System.Data;
    using System.Data.OleDb;
    					
  3. En la ventana de código, pegue el siguiente código en la función Main :
    OleDbConnection cn = new OleDbConnection();
    OleDbCommand cmd = new OleDbCommand();
    DataTable schemaTable; 
    OleDbDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo); 
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. Modifique los parámetros de la propiedad ConnectionString para conectarse correctamente a su SQL Server equipo.
  5. Presione la tecla F5 para compilar y ejecutar el proyecto. Aviso que se enumeran las propiedades de cada campo en la ventana de consola.
  6. Presione ENTRAR para desplazarse por la lista, poner fin a la consola aplicación y volver al entorno de desarrollo integrado (IDE).

Recuperar el esquema de columna con el SQL.NET para OLE DB

Este ejemplo muestra la información de las columnas (campo de esquema Propiedades) de la tabla empleados de Neptuno de SQL Server base de datos.

Tenga en cuenta que cuando se utiliza el SQL.NET para ODBC, utilice el método GetSchemaTable del objeto SqlDataReader .
  1. Iniciar Visual Studio.NET y cree un nuevo de Visual C# Proyecto de aplicación de consola. Class1.cs se crea de forma predeterminada.
  2. Abra la ventana de código de Class1. Pegue el código siguiente en la parte superior de la ventana de código por encima de la declaración de espacio de nombres :
    using System.Data;
    using System.Data.SqlClient;
    					
  3. En la ventana de código, pegue el siguiente código en la función Main :
    SqlConnection cn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    DataTable schemaTable; 
    SqlDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. Modifique los parámetros de la propiedad ConnectionString para conectarse correctamente a su SQL Server equipo.
  5. Presione F5 para compilar y ejecutar el proyecto. Observe que el las propiedades de cada campo aparecen en la ventana de consola.
  6. Presione ENTRAR para desplazarse por la lista, poner fin a la consola aplicación y volver al IDE.

Referencias

Para obtener más información acerca de DataReader y el método GetSchemaTable del objeto , vea los temas siguientes en el Visual Studio.NET en línea Documentación de ayuda:
Recuperar datos mediante DataReader

Método IDataReader.GetSchemaTable

Nota: este tema incluye una lista completa de las columnas en el Devuelve el objeto DataTable.

Método OleDbDataReader.GetSchemaTable

Método SqlDataReader.GetSchemaTable
Para obtener información adicional acerca de cómo utilizar el método GetOleDbSchemaTable del objeto OleDbConnection para recuperar información de esquema, haga clic en el número de artículo a continuación para verlo en Microsoft Knowledge Base:
309681 Cómo recuperar información de esquema mediante GetOleDbSchemaTable y Visual C#.NET

Propiedades

Id. de artículo: 310107 - Última revisión: martes, 12 de junio de 2012 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbdatabase kbhowtomaster kbsqlclient kbsystemdata kbmt KB310107 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 310107

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com