DataTableReader.GetSchemaTable Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een DataTable die de kolommetagegevens van de 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
Retouren
Een DataTable die de metagegevens van de kolom beschrijft.
Uitzonderingen
De DataTableReader is gesloten.
Voorbeelden
In het volgende consoletoepassingsvoorbeeld worden schemagegevens over de opgegeven kolom opgehaald. Geef de DisplaySchemaTableInfo procedure een DataTableReader en een geheel getal door dat de rangtelpositie van een kolom binnen de DataTableReaderkolom vertegenwoordigt en de procedure voert schemagegevens uit naar het consolevenster.
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
Opmerkingen
De methode GetSchemaTable retourneert metagegevens over elke kolom in de volgende volgorde:
| DataReader-kolom | Description |
|---|---|
| ColumnName | De naam van de kolom zoals deze wordt weergegeven in de DataTablekolom . |
| ColumnOrdinal | Het rangnummer van de kolom |
| Kolomgrootte | -1 als de ColumnSize (of MaxLength) eigenschap van de eigenschap DataColumn niet kan worden bepaald of niet relevant is; anders 0 of een positief geheel getal dat de MaxLength waarde bevat. |
| Numeriekeprecisie | Als het kolomtype een numeriek type is, is dit de maximale precisie van de kolom. Als het kolomtype geen numeriek gegevenstype is, is dit een null-waarde. |
| Numericscale | Als het gegevenstype van de kolom een schaalonderdeel heeft, geeft u het aantal cijfers rechts van het decimaalteken als resultaat. Anders retourneert u een null-waarde. |
| Gegevenstype | Het onderliggende type van de kolom. |
| ProviderType | De indicator van het gegevenstype van de kolom. Als het gegevenstype van de kolom verschilt van rij tot rij, is Objectdit de waarde. Deze kolom mag geen null-waarde bevatten. |
| IsLong |
true als het gegevenstype van de kolom is String en MaxLength de eigenschap -1 is. Anders false. |
| AllowDBNull |
true als de allowDbNull-beperking is ingesteld op true voor de kolom; anders, false. |
| IsReadOnly |
true als de kolom niet kan worden gewijzigd; anders false. |
| IsRowVersion |
false, voor elke kolom. |
| IsUnique |
true: Er kunnen geen twee rijen in de DataTable kolom dezelfde waarde hebben.
IsUnique is gegarandeerd waar als de kolom een sleutel zelf vertegenwoordigt of als er een beperking van het type UNIQUE is die alleen van toepassing is op deze kolom.
false: De kolom kan dubbele waarden in de DataTablekolom bevatten. De standaardwaarde van deze kolom is false. |
| IsKey |
true: De kolom is een van een set kolommen die samen de rij in de DataTablerij uniek identificeren. De set kolommen die IsKey zijn ingesteld op true een unieke identificatie van een rij in de DataTable. Er is geen vereiste dat deze set kolommen een minimale set kolommen is. Deze set kolommen kan worden gegenereerd op basis van een DataTable primaire sleutel, een unieke beperking of een unieke index.
false: De kolom is niet vereist om de rij uniek te identificeren. Deze waarde is true als de kolom deelneemt aan één of samengestelde primaire sleutel. Anders is de waarde false. |
| IsAutoIncrement |
true: De kolom wijst waarden toe aan nieuwe rijen in vaste stappen.
false: De kolom wijst geen waarden toe aan nieuwe rijen in vaste stappen. De standaardwaarde van deze kolom is false. |
| BaseCatalogName | De naam van de catalogus in het gegevensarchief dat de kolom bevat.
Null als de naam van de basiscatalogus niet kan worden bepaald. De standaardwaarde voor deze kolom is een null waarde. |
| BaseSchemaName | Deze waarde is altijd Null. |
| BaseTableName | De naam van de DataTable. |
| BaseColumnName | De naam van de kolom in de DataTable. |
| AutoIncrementSeed | De waarde van de DataTableAutoIncrementSeed eigenschap. |
| AutoIncrementStep | De waarde van de DataTableAutoIncrementStep eigenschap. |
| Standaardwaarde | De waarde van de DataColumnDefaultValue eigenschap. |
| Expression | De expressietekenreeks, als de huidige kolom een expressiekolom is en alle kolommen die in de expressie worden gebruikt, behoren tot hetzelfde T:System.Data.DataTable dat de expressiekolom bevat, anders null. |
| Kolommapping | De MappingType waarde die is gekoppeld aan de DataColumn. Het type kan een van Attribute, Elementof Hidden.SimpleContent De standaardwaarde is Element. |
| BaseTableNamespace | De waarde van de DataTableNamespace eigenschap. |
| BaseColumnNamespace | De waarde van de DataColumnNamespace eigenschap. |