DataTableReader.GetSchemaTable Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve un objeto DataTable que describe los metadatos de columna del 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.
Excepciones
La clase DataTableReader está cerrada.
Ejemplos
En el ejemplo de aplicación de consola siguiente se recupera información de esquema sobre la columna especificada. Pase el DisplaySchemaTableInfo
procedimiento a DataTableReader y un entero que represente la posición ordinal de una columna dentro DataTableReader
de y el procedimiento genera información de esquema en la ventana de 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);
}
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 sobre cada columna en el orden siguiente:
Columna DataReader | Descripción |
---|---|
ColumnName | Nombre de la columna tal como aparece en .DataTable |
ColumnOrdinal | Ordinal de la columna |
ColumnSize | -1 si la ColumnSize propiedad (o MaxLength) de DataColumn no se puede determinar o no es relevante; de lo contrario, 0 o un entero positivo que contiene el MaxLength valor. |
NumericPrecision | Si el tipo de columna es un tipo numérico, se trata de la precisión máxima de la columna. Si el tipo de columna no es un tipo de datos numérico, se trata de un valor NULL. |
NumericScale | Si el tipo de datos de columna tiene un componente de escala, devuelva el número de dígitos 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 fila a fila, este valor es Object. Esta columna no puede contener un valor. |
IsLong | true si el tipo de datos de la columna es String y su MaxLength propiedad es -1. En caso contrario, es false . |
AllowDBNull | true si la restricción AllowDbNull se establece en true para la columna; de lo contrario, false . |
IsReadOnly | true si no se puede modificar la columna; de lo contrario, false . |
IsRowVersion | false , para cada columna. |
IsUnique | true : no puede haber dos filas en puede DataTable tener el mismo valor en esta columna. IsUnique se 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. false : la columna puede contener valores duplicados en .DataTable El valor predeterminado de esta columna es false . |
IsKey | true : la columna es uno de un conjunto de columnas que, tomadas juntas, identifican de forma única la fila de DataTable. El conjunto de columnas con IsKey establecido en true debe identificar de forma única una fila en .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 DataTable clave principal, una restricción única o un índice único. false : la columna no es necesaria para identificar de forma única la fila. Este valor es true si la columna participa en una clave principal única o compuesta. De lo contrario, su valor es false . |
IsAutoIncrement | true : la columna asigna valores a nuevas filas en incrementos fijos. false : la columna no asigna valores a nuevas filas en incrementos fijos. El valor predeterminado de esta columna es false . |
BaseCatalogName | Nombre del catálogo del 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 un null valor. |
BaseSchemaName | Este valor es Null siempre. |
BaseTableName | Nombre del objeto DataTable. |
BaseColumnName | Nombre de la columna en .DataTable |
AutoIncrementSeed | Valor de la DataTablepropiedad de AutoIncrementSeed . |
AutoIncrementStep | Valor de la DataTablepropiedad de AutoIncrementStep . |
DefaultValue | Valor de la DataColumnpropiedad de DefaultValue . |
Expression | La cadena de expresión, si la columna actual es una columna de expresión y todas las columnas usadas en la expresión pertenecen a la misma T:System.Data.DataTable que contiene la columna de expresión; de lo contrario null , . |
ColumnMapping | Valor MappingType asociado a DataColumn. El tipo puede ser uno de Attribute , Element , Hidden o SimpleContent . El valor predeterminado es Element . |
BaseTableNamespace | Valor de la DataTablepropiedad de Namespace . |
BaseColumnNamespace | Valor de la DataColumnpropiedad de Namespace . |