DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable Method

Definición

Devuelve un objeto DataTable que describe los metadatos de columna del DataTableReader.Returns a DataTable that describes the column metadata of the DataTableReader.

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

Devoluciones

DataTable que describe los metadatos de columna.A DataTable that describes the column metadata.

Excepciones

Ejemplos

En el siguiente ejemplo de aplicación de consola se recupera información de esquema sobre la columna especificada.The following console application example retrieves schema information about the specified column. Pase el DisplaySchemaTableInfo procedimiento a DataTableReader y un entero que represente la posición ordinal DataTableReaderde una columna dentro de, y el procedimiento genera información de esquema en la ventana de la consola.Pass the DisplaySchemaTableInfo procedure a DataTableReader and an integer representing the ordinal position of a column within the DataTableReader, and the procedure outputs schema information to the console window.

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);
}
Private Sub TestGetSchemaTable()
   ' Set up the data adapter, using information from 
   ' the AdventureWorks sample database.
   ' Modify the SQL expression to retrieve 
   ' data from a different table.
   Dim adapter As SqlDataAdapter = _
      SetupDataAdapter("SELECT * FROM Sales.Customer")

   ' Fill the DataTable, retrieving all the schema information.
   adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
   Dim table As New DataTable
   adapter.Fill(table)

   ' Create the DataTableReader, and close it when done.
   Using reader As New DataTableReader(table)
      ' Modify the column number to display information
      ' about a column other than column 0.
      DisplaySchemaTableInfo(reader, 0)
   End Using

   Console.WriteLine()
   Console.WriteLine("Press Enter to finish.")
   Console.ReadLine()
End Sub

Private Sub DisplaySchemaTableInfo( _
   ByVal reader As DataTableReader, ByVal ordinal As Integer)

   ' Given a DataTableReader, display schema
   ' information about a particular column.
   Try
      Dim schemaTable As DataTable = reader.GetSchemaTable()
      Dim row As DataRow = schemaTable.Rows(ordinal)
      For Each col As DataColumn In schemaTable.Columns
         Console.WriteLine("{0}: {1}", _
            col.ColumnName, row(col.Ordinal))
      Next
   Catch ex As IndexOutOfRangeException
      Console.WriteLine("{0} is an invalid column number.", _
         ordinal)
   End Try
End Sub

Private Function SetupDataAdapter( _
   ByVal sqlString As String) As SqlDataAdapter
   ' Assuming all the default settings, create a SqlDataAdapter
   ' working with the AdventureWorks sample database that's 
   ' available with SQL Server.
   Dim connectionString As String = _
      "Data Source=(local);" & _
      "Initial Catalog=AdventureWorks;" & _
      "Integrated Security=true"
   Return New SqlDataAdapter(sqlString, connectionString)
End Function

Comentarios

El método GetSchemaTable devuelve metadatos acerca de cada columna en el orden siguiente:The GetSchemaTable method returns metadata about each column in the following order:

DataReader (columna)DataReader column DescripciónDescription
ColumNameColumnName El nombre de la columna tal y como aparece en DataTableel.The name of the column as it appears in the DataTable.
ColumnOrdinalColumnOrdinal El ordinal de la columna.The ordinal of the column
ColumnSizeColumnSize -1 si la ColumnSize propiedad ( MaxLengtho) de DataColumn no se puede determinar o no es relevante; de lo contrario, 0 o un entero positivo que contiene MaxLength el valor.-1 if the ColumnSize (or MaxLength) property of the DataColumn cannot be determined or is not relevant; otherwise, 0 or a positive integer that contains the MaxLength value.
NumericPrecisionNumericPrecision Si el tipo de columna es un tipo numérico, se trata de la precisión máxima de la columna.If the column type is a numeric type, this is the maximum precision of the column. Si el tipo de columna no es un tipo de datos numérico, se trata de un valor null.If the column type is not a numeric data type, this is a null value.
NumericScaleNumericScale Si el tipo de datos de la columna tiene un componente de escala, devuelva el número de dígitos a la derecha del separador decimal.If column data type has a scale component, return the number of digits to the right of the decimal point. De lo contrario, devuelve un valor null.Otherwise, return a null value.
DataTypeDataType Tipo subyacente de la columna.The underlying type of the column.
ProviderTypeProviderType Indicador del tipo de datos de la columna.The indicator of the column's data type. Si el tipo de datos de la columna varía de una fila a una fila, Objecteste valor es.If the data type of the column varies from row to row, this value is Object. Esta columna no puede contener un valor null.This column cannot contain a null value.
IsLongIsLong trueSi el tipo de datos de la columna String es y MaxLength su propiedad es-1.true if the data type of the column is String and its MaxLength property is -1. En caso contrario, es false.Otherwise, false.
AllowDBNullAllowDBNull trueSi la restricción AllowDbNull está establecida en true para la columna; en caso falsecontrario,.true if the AllowDbNull constraint is set to true for the column; otherwise, false.
IsReadOnlyIsReadOnly trueSi la columna no se puede modificar; en falsecaso contrario,.true if the column cannot be modified; otherwise false.
IsRowVersionIsRowVersion false, para cada columna.false, for every column.
IsUniqueIsUnique true: Dos filas DataTable no pueden tener el mismo valor en esta columna.true: No two rows in the DataTable can have the same value in this column. IsUniquese garantiza que es true si la columna representa una clave por sí misma o si hay una restricción de tipo UNIQUE que solo se aplica a esta columna.IsUnique is guaranteed to be true if the column represents a key by itself or if there is a constraint of type UNIQUE that applies only to this column. false: La columna puede contener valores duplicados en DataTable.false: The column can contain duplicate values in the DataTable. El valor predeterminado de esta columna falsees.The default of this column is false.
IsKeyIsKey true: La columna es un conjunto de columnas que, en conjunto, identifican de forma única la fila de DataTable.true: The column is one of a set of columns that, taken together, uniquely identify the row in the DataTable. El conjunto de columnas con IsKey establecido en true debe DataTableidentificar de forma única una fila en.The set of columns with IsKey set to true must uniquely identify a row in the DataTable. No es necesario que este conjunto de columnas sea un conjunto mínimo de columnas.There is no requirement that this set of columns is a minimal set of columns. Este conjunto de columnas se puede generar a partir DataTable de una clave principal, una restricción UNIQUE o un índice único.This set of columns may be generated from a DataTable primary key, a unique constraint or a unique index. false: No es necesario que la columna identifique la fila de forma única.false: The column is not required to uniquely identify the row. Este valor es true si la columna participa en una clave principal única o compuesta.This value is true if the column participates in a single or composite primary key. De lo contrario, su falsevalor es.Otherwise, its value is false.
IsAutoIncrementIsAutoIncrement true: La columna asigna valores a las nuevas filas en incrementos fijos.true: The column assigns values to new rows in fixed increments. false: La columna no asigna valores a las nuevas filas en incrementos fijos.false: The column does not assign values to new rows in fixed increments. El valor predeterminado de esta columna falsees.The default of this column is false.
BaseCatalogNameBaseCatalogName Nombre del catálogo en el almacén de datos que contiene la columna.The name of the catalog in the data store that contains the column. NullSi no se puede determinar el nombre del catálogo base.Null if the base catalog name cannot be determined. El valor predeterminado de esta columna es un null valor.The default value for this column is a null value.
BaseSchemaNameBaseSchemaName Este valor siempre Nulles.This value is always Null.
BaseTableNameBaseTableName Nombre del objeto DataTable.The name of the DataTable.
BaseColumnNameBaseColumnName Nombre de la columna de DataTable.The name of the column in the DataTable.
AutoIncrementSeedAutoIncrementSeed Valor de la DataTable AutoIncrementSeed propiedad de.The value of the DataTable's AutoIncrementSeed property.
AutoIncrementStepAutoIncrementStep Valor de la DataTable AutoIncrementStep propiedad de.The value of the DataTable's AutoIncrementStep property.
DefaultValueDefaultValue Valor de la DataColumn DefaultValue propiedad de.The value of the DataColumn's DefaultValue property.
ExpresiónExpression La cadena de expresión, si la columna actual es una columna de expresión y todas las columnas que se usan en la T:System.Data.DataTable expresión pertenecen al mismo que contiene la nullcolumna de expresión; de lo contrario,.The expression string, if the current column is an expression column and all columns used in the expression belong to the same T:System.Data.DataTable that contains the expression column; otherwise null.
ColumnMappingColumnMapping MappingType Valor asociado DataColumna.The MappingType value associated with the DataColumn. El tipo puede Attributeser, Element, Hiddeno SimpleContent.The type can be one of Attribute, Element, Hidden, or SimpleContent. El valor predeterminado es Element.The default value is Element.
BaseTableNamespaceBaseTableNamespace Valor de la DataTable Namespace propiedad de.The value of the DataTable's Namespace property.
BaseColumnNamespaceBaseColumnNamespace Valor de la DataColumn Namespace propiedad de.The value of the DataColumn's Namespace property.

Se aplica a