Este tema aún no ha recibido ninguna valoración - Valorar este tema

DataTableReader.GetSchemaTable (Método)

Actualización: noviembre 2007

Devuelve un objeto DataTable que describe los metadatos de columna del objeto DataTableReader.

Espacio de nombres:  System.Data
Ensamblado:  System.Data (en System.Data.dll)
public override DataTable GetSchemaTable()
public DataTable GetSchemaTable()
public override function GetSchemaTable() : DataTable

Valor devuelto

Tipo: System.Data.DataTable
Objeto DataTable que describe los metadatos de columna.

Implementaciones

IDataReader.GetSchemaTable()
ExcepciónCondición
InvalidOperationException

El objeto DataTableReader está cerrado.

El método GetSchemaTable devuelve los metadatos de cada columna en el orden siguiente:

Columna DataReader

Descripción

ColumnName

Nombre de la columna tal como aparece en el objeto DataTable.

ColumnOrdinal

Ordinal de la columna.

ColumnSize

-1, si no se puede determinar la propiedad ColumnSize (o MaxLength) del objeto DataColumn o si no es relevante; de lo contrario, 0 o un entero positivo que contiene el valor MaxLength.

NumericPrecision

Si el tipo de la columna es un tipo numérico, corresponde a la precisión máxima de la columna. Si el tipo de la columna no es un tipo de dato numérico, este valor es null.

NumericScale

Si el tipo de datos de la columna tiene un componente de escala, devuelve el número de dígitos situados a la derecha del separador decimal. De lo contrario, devuelve un valor null.

DataType

Tipo subyacente de la columna.

ProviderType

Indicador del tipo de datos de la columna. Si el tipo de datos de la columna varía de una fila a otra, este valor es Object. Esta columna no puede contener un valor null.

IsLong

true si el tipo de datos de la columna es String y su propiedad MaxLength es -1. De lo contrario, false.

AllowDBNull

true si la restricción AllowDbNull se establece en true para la columna; de lo contrario, false.

IsReadOnly

true si la columna no se puede modificar; en caso contrario, false.

IsRowVersion

false, para cada columna.

IsUnique

true: dos filas del objeto DataTable no pueden tener el mismo valor en esta columna. IsUnique será siempre true si la propia columna representa una clave o si hay una restricción de tipo UNIQUE que sólo se aplica a esta columna. false: la columna puede contener valores duplicados en el objeto DataTable. El valor predeterminado de esta columna es false.

IsKey

Es true si la columna forma parte de un conjunto de columnas cuya combinación identifica la fila de forma única en el objeto DataTable. El conjunto de columnas que tenga IsKey establecido en true debe identificar de forma única una fila del objeto DataTable. No es necesario que este conjunto de columnas sea un conjunto mínimo de columnas. Este conjunto de columnas se puede generar a partir de una clave principal de DataTable, de una restricción única o de un índice único. Es false si no es necesario que la columna identifique la fila de forma única. Este valor es true si la columna participa en una clave principal única o compuesta. De lo contrario, su valor es false.

IsAutoIncrement

Es true si la columna asigna valores a las filas nuevas con incrementos fijos. Es false si la columna no asigna valores a las filas nuevas con incrementos fijos. El valor predeterminado de esta columna es false.

BaseCatalogName

Nombre del catálogo en el almacén de datos que contiene la columna. Null si no se puede determinar el nombre del catálogo base. El valor predeterminado de esta columna es null.

BaseSchemaName

Este valor siempre es Null.

BaseTableName

Nombre del objeto DataTable.

BaseColumnName

Nombre de la columna en el objeto DataTable.

AutoIncrementSeed

Valor de la propiedad AutoIncrementSeed del objeto DataTable.

AutoIncrementStep

Valor de la propiedad AutoIncrementStep del objeto DataTable.

DefaultValue

Valor de la propiedad DefaultValue del objeto DataColumn.

Expression

Cadena de expresión, si la columna actual es una columna de expresión y todas las columnas utilizadas en la expresión pertenecen al mismo objeto T:System.Data.DataTable que contiene la columna de expresión; de lo contrario, null.

ColumnMapping

Valor de MappingType asociado al objeto DataColumn. El tipo puede ser cualquiera de éstos: Attribute, Element, Hidden o SimpleContent. El valor predeterminado es Element.

BaseTableNamespace

Valor de la propiedad Namespace del objeto DataTable.

BaseColumnNamespace

Valor de la propiedad Namespace del objeto DataColumn.

En el ejemplo de aplicación de consola siguiente se recupera la información de esquema sobre la columna especificada. Pasa el procedimiento DisplaySchemaTableInfo al objeto DataTableReader junto con un entero que representa la posición ordinal de una columna del objeto DataTableReader, y el procedimiento genera información de esquema que se muestra en la ventana de la consola.

private static void TestGetSchemaTable()
{
    // Set up the data adapter, using information from 
    // the AdventureWorks sample database.
    // Modify the SQL expression to retrieve 
    // data from a different table.
    SqlDataAdapter adapter = 
        SetupDataAdapter("SELECT * FROM Sales.Customer");

    // Fill the DataTable, retrieving all the schema information.
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    DataTable table = new DataTable();
    adapter.Fill(table);

    // Create the DataTableReader, and close it when done.
    using (DataTableReader reader = new DataTableReader(table))
    {
        // Modify the column number to display information
        // about a column other than column 0.
        DisplaySchemaTableInfo(reader, 0);
    }

    Console.WriteLine();
    Console.WriteLine("Press Enter to finish.");
    Console.ReadLine();
}

private static void DisplaySchemaTableInfo(
        DataTableReader reader, int ordinal)
{
    // Given a DataTableReader, display schema
    // information about a particular column.
    try
    {
        DataTable schemaTable = reader.GetSchemaTable();
        DataRow row = schemaTable.Rows[ordinal];
        foreach (DataColumn col in schemaTable.Columns)
        {
            Console.WriteLine("{0}: {1}", 
                col.ColumnName, row[col.Ordinal]);
        }
    }
    catch (IndexOutOfRangeException ex)
    {
        Console.WriteLine("{0} is an invalid column number.", 
            ordinal);
    }
}

private static SqlDataAdapter SetupDataAdapter(String sqlString)
{
    // Assuming all the default settings, create a 
    // SqlDataAdapter working with the AdventureWorks
    // sample database that's available with 
    // SQL Server.
    String connectionString = 
        "Data source=(local);initial catalog=AdventureWorks;" +
        "Integrated Security=True";
    return new SqlDataAdapter(sqlString, connectionString);
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0

.NET Compact Framework

Compatible con: 3.5, 2.0

XNA Framework

Compatible con: 1.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.