DataTableReader.GetSchemaTable Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne une DataTable valeur qui décrit les métadonnées de colonne du 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
Retours
Qui DataTable décrit les métadonnées de colonne.
Exceptions
La DataTableReader fermeture est terminée.
Exemples
L’exemple d’application console suivant récupère des informations de schéma sur la colonne spécifiée. Passez la DisplaySchemaTableInfo procédure a DataTableReader et un entier représentant la position ordinale d’une colonne dans le DataTableReader, et la procédure génère des informations de schéma dans la fenêtre de 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
Remarques
La méthode GetSchemaTable retourne des métadonnées sur chaque colonne dans l’ordre suivant :
| Colonne DataReader | Description |
|---|---|
| ColumnName | Nom de la colonne telle qu’elle apparaît dans le DataTable. |
| ColumnOrdinal | ordinal de la colonne |
| TailleDeColonne | -1 si la ColumnSize propriété (ou MaxLength) du champ DataColumn ne peut pas être déterminée ou n’est pas pertinente ; sinon, 0 ou un entier positif qui contient la MaxLength valeur. |
| NumericPrecision | Si le type de colonne est un type numérique, il s’agit de la précision maximale de la colonne. Si le type de colonne n’est pas un type de données numérique, il s’agit d’une valeur Null. |
| NumericScale | Si le type de données de colonne a un composant d’échelle, retournez le nombre de chiffres à droite du point décimal. Sinon, retournez une valeur Null. |
| Type de données | Type sous-jacent de la colonne. |
| ProviderType | Indicateur du type de données de la colonne. Si le type de données de la colonne varie d’une ligne à l’autre, cette valeur est Object. Cette colonne ne peut pas contenir de valeur Null. |
| IsLong |
true si le type de données de la colonne est String et sa MaxLength propriété est -1. Sinon, false. |
| AllowDBNull |
true si la contrainte AllowDbNull a la valeur true pour la colonne ; sinon, false. |
| IsReadOnly |
true si la colonne ne peut pas être modifiée ; sinon false. |
| IsRowVersion |
false, pour chaque colonne. |
| IsUnique |
true: aucune ligne dans la DataTable colonne ne peut avoir la même valeur.
IsUnique est garanti être true si la colonne représente une clé par elle-même ou s’il existe une contrainte de type UNIQUE qui s’applique uniquement à cette colonne.
false: la colonne peut contenir des valeurs en double dans le DataTable. La valeur par défaut de cette colonne est false. |
| IsKey |
true: la colonne est l’un des ensembles de colonnes qui, ensemble, identifient de façon unique la ligne dans le DataTable. L’ensemble de colonnes dont IsKey l’objet est défini doit true identifier de manière unique une ligne dans le DataTable. Il n’est pas nécessaire que cet ensemble de colonnes soit un ensemble minimal de colonnes. Cet ensemble de colonnes peut être généré à partir d’une clé primaire, d’une DataTable contrainte unique ou d’un index unique.
false: la colonne n’est pas nécessaire pour identifier de manière unique la ligne. Cette valeur est true si la colonne participe à une clé primaire unique ou composite. Sinon, sa valeur est false. |
| IsAutoIncrement |
true: la colonne affecte des valeurs à de nouvelles lignes par incréments fixes.
false: la colonne n’affecte pas de valeurs à de nouvelles lignes par incréments fixes. La valeur par défaut de cette colonne est false. |
| BaseCatalogName | Nom du catalogue dans le magasin de données qui contient la colonne.
Null si le nom du catalogue de base ne peut pas être déterminé. La valeur par défaut de cette colonne est une null valeur. |
| BaseSchemaName | Cette valeur est toujours Null. |
| BaseTableName | Nom du DataTable. |
| BaseColumnName | Nom de la colonne dans le DataTable. |
| AutoIncrementSeed | Valeur de la DataTablepropriété 's AutoIncrementSeed . |
| AutoIncrementStep | Valeur de la DataTablepropriété 's AutoIncrementStep . |
| DefaultValue | Valeur de la DataColumnpropriété 's DefaultValue . |
| Expression | La chaîne d’expression, si la colonne actuelle est une colonne d’expression et que toutes les colonnes utilisées dans l’expression appartiennent au même T:System.Data.DataTable qui contient la colonne d’expression ; sinon null. |
| ColumnMapping | Valeur MappingType associée au DataColumn. Le type peut être l’un des Attributetypes , Elementou HiddenSimpleContent. La valeur par défaut est Element. |
| BaseTableNamespace | Valeur de la DataTablepropriété 's Namespace . |
| BaseColumnNamespace | Valeur de la DataColumnpropriété 's Namespace . |