DataTableReader.GetSchemaTable Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um DataTable que descreve os metadados DataTableReaderda coluna de .
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
Devoluções
A DataTable que descreve os metadados da coluna.
Exceções
Está DataTableReader fechado.
Exemplos
O seguinte exemplo de aplicação de consola recupera informações de esquema sobre a coluna especificada. Passe o DisplaySchemaTableInfo procedimento a DataTableReader e um inteiro que representa a posição ordinal de uma coluna dentro do DataTableReader, e o procedimento fornece informação do esquema para a janela do console.
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
Observações
O método GetSchemaTable devolve metadados sobre cada coluna na seguinte ordem:
| Coluna DataReader | Description |
|---|---|
| ColumnName | O nome da coluna tal como aparece no DataTable. |
| ColumnOrdinal | O ordinal da coluna |
| Tamanho da Coluna | -1 se a ColumnSize propriedade (ou MaxLength) de não DataColumn puder ser determinada ou não for relevante; caso contrário, 0 ou um inteiro positivo que contenha o MaxLength valor. |
| Precisão Numérica | Se o tipo de coluna for um tipo numérico, esta é a precisão máxima da coluna. Se o tipo de coluna não for um tipo de dado numérico, isto é um valor nulo. |
| NumericScale | Se o tipo de dado da coluna tiver um componente de escala, deva o número de dígitos à direita do ponto decimal. Caso contrário, devolve um valor nulo. |
| Tipo de Dados | O tipo subjacente da coluna. |
| Tipo de provedor | O indicador do tipo de dado da coluna. Se o tipo de dado da coluna variar de linha para linha, este valor é Object. Esta coluna não pode conter um valor nulo. |
| IsLong |
true se o tipo de dados da coluna for String e a sua MaxLength propriedade for -1. Caso contrário, false. |
| AllowDBNull |
true se a restrição AllowDbNull for definida como verdadeira para a coluna; caso contrário, false. |
| IsReadOnly |
true se a coluna não puder ser modificada; caso contrário false. |
| IsRowVersion |
false, para cada coluna. |
| IsUnique |
true: Não há duas linhas em que DataTable podem ter o mesmo valor nesta coluna.
IsUnique é garantido que é verdadeiro se a coluna representa uma chave por si só ou se existir uma restrição de tipo ÚNICO que se aplique apenas a esta coluna.
false: A coluna pode conter valores duplicados no DataTable. O padrão desta coluna é false. |
| IsKey |
true: A coluna é uma de um conjunto de colunas que, tomadas em conjunto, identificam de forma única a linha no DataTable. O conjunto de colunas com IsKey definido para true deve identificar unicamente uma linha no DataTable. Não há qualquer requisito de que este conjunto de colunas seja um conjunto mínimo de colunas. Este conjunto de colunas pode ser gerado a partir de uma DataTable chave primária, uma restrição única ou um índice único.
false: A coluna não é necessária para identificar de forma única a linha. Este valor ocorre true se a coluna participar numa chave primária simples ou composta. Caso contrário, o seu valor é false. |
| IsAutoIncrement |
true: A coluna atribui valores a novas linhas em incrementos fixos.
false: A coluna não atribui valores a novas linhas em incrementos fixos. O padrão desta coluna é false. |
| BaseCatalogName | O nome do catálogo no armazenamento de dados que contém a coluna.
Null se o nome do catálogo base não puder ser determinado. O valor padrão desta coluna é um null valor. |
| BaseSchemaName | Este valor é sempre Null. |
| BaseTableName | O nome do DataTable. |
| BaseColumnName | O nome da coluna no DataTable. |
| AutoIncrementSeed | O valor da DataTablepropriedade de AutoIncrementSeed . |
| AutoIncrementStep | O valor da DataTablepropriedade de AutoIncrementStep . |
| Valor Padrão | O valor da DataColumnpropriedade de DefaultValue . |
| Expression | A cadeia de expressão, se a coluna atual for uma coluna de expressão e todas as colunas usadas na expressão pertencerem à mesma T:System.Data.DataTable que contém a coluna de expressão; caso contrário null. |
| ColumnMapping | O MappingType valor associado ao DataColumn. O tipo pode ser um de Attribute, Element, Hidden, ou SimpleContent. O valor predefinido é Element. |
| BaseTableNamespace | O valor da DataTablepropriedade de Namespace . |
| BaseColumnNamespace | O valor da DataColumnpropriedade de Namespace . |