DataTableReader.GetSchemaTable (Método)
Ensamblado: System.Data (en system.data.dll)
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 referencia de objeto null (Nothing en Visual Basic). |
| 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 .P:System.Data.DataColumn.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, referencia de objeto null (Nothing en Visual Basic). |
| 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 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.