DataTableReader.GetSchemaTable Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna um DataTable que descreve os metadados da coluna do 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
Retornos
Um DataTable que descreve os metadados de coluna.
Exceções
O DataTableReader está fechado.
Exemplos
O exemplo de aplicativo de console a seguir 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 gera informações de 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
Comentários
O método GetSchemaTable retorna metadados sobre cada coluna na seguinte ordem:
Coluna DataReader | Descrição |
---|---|
ColumnName | O nome da coluna como ela aparece no DataTable. |
ColumnOrdinal | O ordinal da coluna |
ColumnSize | -1 se a ColumnSize propriedade (ou MaxLength) do DataColumn não puder ser determinada ou não for relevante; caso contrário, 0 ou um inteiro positivo que contenha o MaxLength valor. |
NumericPrecision | Se o tipo de coluna for um tipo numérico, essa será a precisão máxima da coluna. Se o tipo de coluna não for um tipo de dados numérico, esse será um valor nulo. |
NumericScale | Se o tipo de dados de coluna tiver um componente de escala, retorne o número de dígitos à direita do ponto decimal. Caso contrário, retorne um valor nulo. |
Tipo de dados | O tipo subjacente da coluna. |
ProviderType | O indicador do tipo de dados da coluna. Se o tipo de dados da coluna variar de linha para linha, esse valor será Object. Esta coluna não pode ter um valor nulo. |
IsLong | true se o tipo de dados da coluna for String e sua MaxLength propriedade for -1. Caso contrário, false . |
AllowDBNull | true se a restrição AllowDbNull estiver definida como true 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 : nenhuma duas linhas no DataTable pode ter o mesmo valor nesta coluna. IsUnique é garantido ser true se a coluna representa uma chave por si só ou se há uma restrição do tipo UNIQUE que se aplica somente a esta coluna. false : a coluna pode conter valores duplicados no DataTable . O padrão desta coluna é false . |
IsKey | true : a coluna é um de um conjunto de colunas que, juntas, identificam exclusivamente a linha no DataTable. O conjunto de colunas com IsKey definido como true deve identificar exclusivamente uma linha no DataTable . Não há nenhum requisito de que esse conjunto de colunas seja um conjunto mínimo de colunas. Esse conjunto de colunas pode ser gerado de uma DataTable chave primária, uma restrição exclusiva ou um índice exclusivo. false : a coluna não é necessária para identificar exclusivamente a linha. Esse valor será true se a coluna participar de uma chave primária única ou composta. Caso contrário, seu valor será 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 repositório de dados que contém a coluna. Null se o nome do catálogo base não puder ser determinado. O valor padrão para esta 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 do .AutoIncrementSeed |
Autoincrementstep | O valor da DataTablepropriedade do .AutoIncrementStep |
DefaultValue | O valor da DataColumnpropriedade do .DefaultValue |
Expression | A cadeia de caracteres de expressão, se a coluna atual for uma coluna de expressão e todas as colunas usadas na expressão pertencerem ao mesmo 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 dos Attribute , Element , Hidden ou SimpleContent . O valor padrão é Element . |
BaseTableNamespace | O valor da DataTablepropriedade do .Namespace |
BaseColumnNamespace | O valor da DataColumnpropriedade do .Namespace |