Comment faire pour récupérer un schéma de colonne en utilisant la méthode GetSchemaTable de DataReader et Visual C# .NET

Pour obtenir une version Microsoft Visual Basic .NET de cet article, reportez-vous à la section.
310108 .
Pour obtenir une version Microsoft Visual C++ .NET de cet article, reportez-vous à la section.
309683 .

Cet article fait référence à l’espace de noms bibliothèque de classes Microsoft.NET Framework suivant :
  • System.Data.OleDb

DANS CETTE TÂCHE.

Résumé

Cet article montre comment utiliser la méthode GetSchemaTable de l’objet DataReader dans ADO.NET pour récupérer des informations de schéma de colonne. Un autre nom pour le schéma d’une colonne est ses propriétés de champ. Les informations de schéma de colonne comprennent les informations suivantes sur la colonne :
  • Nom
  • Type de données
  • Taille
  • Indique si la colonne est un champ de clé primaire
  • Indique si la colonne est un champ NuméroAuto (AutoIncrement)
La méthode GetSchemaTable retourne une propriété de table de données qui contient le schéma de colonne pour un objet DataReader. Le DataTable contient une ligne pour chaque champ dans le jeu de résultats. Chaque colonne correspond à une propriété du champ dans le jeu de résultats. La propriété ColumnName de la colonne de la table de données est le nom de la propriété du champ, par exemple la propriété ColumnName, DataType, ColumnSize, IsKeyColumnou IsAutoIncrement . La valeur de la colonne du DataTable est la valeur de la propriété, telle que la valeur de prénom pour la propriété ColumnName .
Remarque Pour obtenir des informations de clé primaire, y compris si un champ fait partie d’une clé primaire et s’il s’agit d’un champ d’auto-incrémentation , vous devez définir la valeur CommandBehavior du DataReader à CommandBehavior.KeyInfo.

Vous pouvez utiliser la méthode GetSchemaTable avec le fournisseur OLE DB .NET ou le fournisseur SQL. La méthode OleDbDataReader.GetSchemaTable correspond à la méthode OLE DB IColumnsRowset::GetColumnsRowset . La méthode SqlDataReader.GetSchemaTable n’utilise pas une couche de fournisseur OLE DB.

De note, sauf si vous utilisez explicitement la méthode GetSchemaTable , DataReader ne renvoie pas de schéma de colonne. En outre, si vous utilisez GetSchemaTable pour extraire le schéma de colonne, vous ne peut pas mettre à jour le DataReader. L' objet DataReader récupère toujours un flux de données en lecture seule et avant uniquement à partir d’une base de données.

Quand utiliser la méthode GetSchemaTable

  • L’objet SqlConnection ne gère pas la récupération des informations de schéma de SQL Server dans une méthode analogue à la méthode GetOleDbSchemaTable de l’objet OleDbConnection . La méthode GetSchemaTable de la classe SqlDataReader offre un moyen simple pour obtenir des informations de schéma de colonne à partir de SQL Server.
  • Bien que la méthode GetOleDbSchemaTable de l’objet OleDbConnection peut retourner des informations de schéma de colonne de base de données et table, vous pouvez constater que la méthode GetSchemaTable de l’objet DataReader est plus facile à utiliser si vous souhaitez récupérer uniquement les informations de schéma de colonne.
  • Vous pouvez utiliser la méthode GetSchemaTable pour créer un nouveau DataTable basé sur le schéma d’une propriété existante DataTable lorsque vous personnalisez les noms de colonnes et d’autres attributs de la colonne. Pour l’exemple de code qui montre comment utiliser GetSchemaTable pour définir une nouvelle table, reportez-vous à la rubrique « Visual Studio exemples : Fitch et Mather 7.0 exécuter SQL Query » dans la documentation d’aide en ligne de Microsoft Visual Studio .NET.

Récupérer un schéma de colonne avec le fournisseur OLE DB .NET

Cet exemple répertorie les informations de schéma pour les colonnes (propriétés du champ) de la table Employees de la base de données SQL Server Northwind.

Notez que lorsque vous utilisez le fournisseur OLE DB .NET, vous utilisez la méthode GetSchemaTable de l’objet OleDbDataReader .
  1. Démarrez Visual Studio .NET, puis créez un nouveau projet d’Application Console Visual C#. Class1.cs est créé par défaut.
  2. Ouvrez la fenêtre Code de Class1. Collez le code suivant en haut de la fenêtre Code au-dessus de la déclaration d’espace de noms :
    using System.Data;using System.Data.OleDb;

  3. Dans la fenêtre Code, collez le code suivant dans la fonction Main :
    OleDbConnection cn = new OleDbConnection();OleDbCommand cmd = new OleDbCommand();
    DataTable schemaTable;
    OleDbDataReader myReader;

    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;
    Password=password;Initial Catalog=Northwind";
    cn.Open();

    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);

    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();

    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
    //For each property of the field...
    foreach (DataColumn myProperty in schemaTable.Columns) {
    //Display the field name and value.
    Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
    }
    Console.WriteLine();

    //Pause.
    Console.ReadLine();
    }

    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();

  4. Modifier les paramètres de la propriété ConnectionString pour vous connecter correctement à votre ordinateur SQL Server.
  5. Appuyez sur la touche F5 pour compiler et exécuter le projet. Notez que les propriétés de chaque champ sont répertoriées dans la fenêtre de Console.
  6. Appuyez sur la touche entrée pour faire défiler la liste, mettre fin à l’application console et revenir à l’environnement de développement intégré (IDE).

Récupérer un schéma de colonne avec le fournisseur .NET pour SQL

Cet exemple répertorie les informations de schéma pour les colonnes (propriétés du champ) de la table Employees de la base de données SQL Server Northwind.

Notez que lorsque vous utilisez le fournisseur SQL, vous utilisez la méthode GetSchemaTable de l’objet SqlDataReader .
  1. Démarrez Visual Studio .NET et créez un nouveau projet d’Application Console Visual C#. Class1.cs est créé par défaut.
  2. Ouvrez la fenêtre Code de Class1. Collez le code suivant en haut de la fenêtre Code au-dessus de la déclaration d’espace de noms :
    using System.Data;using System.Data.SqlClient;

  3. Dans la fenêtre Code, collez le code suivant dans la fonction Main :
    SqlConnection cn = new SqlConnection();SqlCommand cmd = new SqlCommand();
    DataTable schemaTable;
    SqlDataReader myReader;

    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Data Source=server;User ID=login;
    Password=password;Initial Catalog=Northwind";
    cn.Open();

    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);

    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();

    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
    //For each property of the field...
    foreach (DataColumn myProperty in schemaTable.Columns) {
    //Display the field name and value.
    Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
    }
    Console.WriteLine();

    //Pause.
    Console.ReadLine();
    }

    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();

  4. Modifier les paramètres de la propriété ConnectionString pour vous connecter correctement à votre ordinateur SQL Server.
  5. Appuyez sur F5 pour compiler et exécuter le projet. Notez que les propriétés de chaque champ sont répertoriées dans la fenêtre de Console.
  6. Appuyez sur la touche entrée pour faire défiler la liste, mettre fin à l’application console et revenir à l’environnement IDE.

Références

Pour plus d’informations sur le DataReader et la méthode GetSchemaTable , consultez les rubriques suivantes dans la documentation d’aide en ligne de Visual Studio .NET :Pour plus d’informations sur l’utilisation de la méthode GetOleDbSchemaTable de l’objet OleDbConnection pour récupérer des informations de schéma, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
309681 comment récupérer les informations de schéma à l’aide de GetOleDbSchemaTable et Visual C# .NET
Propriétés

ID d'article : 310107 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires