Share via


Remplissage de groupes de données avec des données

Le TableAdapter est le mécanisme Visual Studio standard pour exécuter des requêtes Transact-SQL et pour remplir des groupes de données.

Vous pouvez exécuter des instructions SQL ou des procédures stockées sur une source de données à l'aide de TableAdapters ou d'objets de commande (par exemple, SqlCommand). Pour charger des données dans des groupes de données créés à l'aide d'outils de conception dans Visual Studio, utilisez des TableAdapters. Pour charger des données dans des groupes de données créés par programmation, utilisez des adaptateurs de données. Si votre application n'utilise pas de groupes de données, utilisez des objets de commande pour exécuter directement les instructions SQL ou les procédures stockées sur une base de données.

Les rubriques suivantes fournissent des détails sur le remplissage de groupes de données avec des données Visual Studio :

Rubrique

Description

Comment : remplir de données un groupe de données

Fournit des détails sur le chargement de données dans des groupes de données à l'aide de TableAdapters et de DataAdapters.

Comment : créer et exécuter une instruction SQL qui retourne des lignes

Fournit des détails sur la création et l'exécution d'instructions SQL qui retournent des lignes à l'aide de requêtes TableAdapter et d'objets Command.

Comment : créer et exécuter une instruction SQL qui retourne une seule valeur

Fournit des détails sur la création et l'exécution d'instructions SQL qui retournent des valeurs uniques à l'aide de requêtes TableAdapter et d'objets Command.

Comment : créer et exécuter une instruction SQL qui ne retourne aucune valeur

Fournit des détails sur la création et l'exécution d'instructions SQL qui ne retournent aucune valeur à l'aide de requêtes TableAdapter et d'objets Command.

Comment : exécuter une procédure stockée qui retourne des lignes

Fournit des détails sur l'exécution de procédures stockées qui retournent des lignes à l'aide de requêtes TableAdapter et d'objets Command.

Comment : exécuter une procédure stockée qui retourne une seule valeur

Fournit des détails sur l'exécution de procédures stockées qui retournent des valeurs uniques à l'aide de requêtes TableAdapter et d'objets Command.

Comment : exécuter une procédure stockée qui ne retourne aucune valeur

Fournit des détails sur l'exécution de procédures stockées qui ne retournent aucune valeur à l'aide de requêtes TableAdapter et d'objets Command.

Comment : définir et obtenir des paramètres pour des objets de commande

Fournit des détails sur l'assignation de valeurs à des paramètres dans des requêtes et des procédures stockées, ainsi que sur la lecture des valeurs dans les paramètres retournés par des commandes exécutées.

Procédure pas à pas : remplissage d'un Dataset avec des données

Fournit des informations sur la création d'un groupe de données et son remplissage avec des données provenant d'une base de données.

Procédure pas à pas : lecture des données XML dans un groupe de données

Fournit des détails sur la création d'une application Windows qui charge des données XML dans un groupe de données, puis affiche ce dernier dans un contrôle DataGridView.

Le remplissage de groupes de données

Si vous créez un groupe de données avec un outil de conception Visual Studio (tel que le Concepteur de DataSet ou l'Configuration de source de données (Assistant)), vous utilisez un TableAdapter pour le remplir. Les TableAdapters exécutent vos instructions SQL ou vos procédures stockées.

Si vous créez un groupe de données sans outil de conception, vous devez utiliser des adaptateurs de données pour remplir et mettre à jour les données. (Les TableAdapters ne sont pas des classes réelles dans le .NET Framework 4 ; ils ne sont donc pas appropriés à l'utilisation de groupes de données créés sans outils de conception.) Pour plus d'informations sur la façon de charger des données dans des groupes de données avec des TableAdapters ou des adaptateurs de données, consultez Comment : remplir de données un groupe de données.

Requêtes TableAdapter

Vous pouvez exécuter des requêtes TableAdapter pour remplir des données dans des groupes de données (en particulier pour charger des données dans les DataTables qui composent un groupe de données). Vous pouvez créer des requêtes TableAdapter à l'aide de l'Configuration de requête TableAdapter (Assistant) dans le Concepteur de DataSet. Les requêtes TableAdapter apparaissent en tant que méthodes nommées sur un TableAdapter et sont exécutées en appelant la méthode TableAdapter. Pour plus d'informations sur la création et l'exécution des requêtes TableAdapter, consultez les pages suivantes :

Objets de commande

Les objets de commande vous permettent d'exécuter directement des instructions SQL et des procédures stockées sur une base de données, sans avoir besoin d'un DataSet, d'un TableAdapter ou d'un DataAdapter. (Le terme objet de commande fait référence à la commande propre au Fournisseur de données .NET Framework que votre application utilise. Par exemple, si votre application utilise le fournisseur de données .NET Framework pour SQL Server, l'objet de commande est SqlCommand.)

Pour configurer des commandes afin d'interroger des données à l'aide d'instructions SQL ou de procédures stockées, affectez à la propriété CommandType de la commande de données l'une des valeurs comprises dans l'énumération CommandType. Affectez à CommandType la valeur Text pour exécuter des instructions SQL ou la valeur StoredProcedure pour exécuter des procédures stockées. Ensuite, affectez comme valeur à la propriété CommandText une instruction SQL ou le nom de la procédure stockée. Vous pouvez maintenant exécuter la commande de données en appelant l'une de ses méthodes d'exécution (ExecuteReader, ExecuteScalar, ExecuteNonQuery).

Chacun des Fournisseurs de données .NET Framework (ADO.NET) propose un objet de commande optimisé pour les bases de données spécifiques.

En utilisant les commandes de données, vous pouvez effectuer les opérations suivantes dans votre application :

  • Exécuter des commandes Select qui retournent directement des résultats directement lisibles plutôt que de le charger dans le groupe de données. Pour lire les résultats, utilisez un lecteur de données (objet OleDbDataReader, SqlDataReader, OdbcDataReader ou OracleDataReader) qui fonctionne comme un curseur avant uniquement en lecture seule auquel vous pouvez lier des contrôles. Cette stratégie est utile pour réduire la quantité de mémoire utilisée et pour charger des données en lecture seule très rapidement.

  • Exécuter des commandes du langage de définition des données (DDL) pour créer, modifier et supprimer des tables, des procédures stockées et d'autres structures de base de données. (Vous devez bien sûr avoir l'autorisation d'effectuer ces opérations).

  • Exécuter des commandes pour obtenir des informations sur le catalogue de base de données.

  • Exécuter des commandes SQL dynamiques pour mettre à jour, insérer et supprimer des enregistrements, plutôt que de mettre à jour des tables de groupe de données et de copier ensuite les modifications dans la base de données.

  • Exécuter des commandes qui retournent une valeur scalaire (c'est-à-dire une valeur unique), telle que les résultats d'une fonction d'agrégation (SUM, COUNT, AVG, etc.).

  • Exécuter des commandes qui retournent des données d'une base de données SQL Server (version 7.0 ou ultérieure) au format XML. Une utilisation courante consiste, par exemple, à exécuter une requête et à récupérer les données au format XML, à leur appliquer une transformation XSLT (pour les convertir en données HTML), puis à envoyer les résultats à un navigateur.

Les propriétés d'une commande contiennent toutes les informations nécessaires pour exécuter cette commande sur une base de données. Et notamment :

  • **Une connexion   **La commande référence une connexion qu'elle utilise pour communiquer avec la base de données.

  • Le nom ou le texte d'une commande   La commande contient le texte réel d'une instruction SQL ou le nom d'une procédure stockée à exécuter.

  • Des paramètres   Une commande peut requérir que vous passiez avec elle des valeurs de paramètre (paramètres d'entrée). La commande peut également retourner des valeurs sous la forme d'une valeur de retour ou de valeurs de paramètres de sortie. Chaque commande possède une collection de paramètres que vous pouvez définir ou lire individuellement pour passer ou recevoir des valeurs. Pour plus d'informations, consultez Comment : définir et obtenir des paramètres pour des objets de commande.

Une commande est exécutée en utilisant une méthode adaptée aux résultats que vous vous attendez à obtenir. Si, par exemple, vous attendez des lignes, appelez la méthode ExecuteReader de la commande, qui retourne des enregistrements dans un lecteur de données. Si vous exécutez une commande UPDATE, INSERT ou DELETE, appelez la méthode ExecuteNonQuery de la commande, qui retourne une valeur indiquant le nombre de lignes affectées. Si vous exécutez une fonction d'agrégation, telle que le retour du nombre de commandes d'un client, vous devez appeler la méthode ExecuteScalar.

Jeux de résultats multiples

Une utilisation standard d'un objet de commande consiste à retourner une table de données unique (un jeu de lignes). Toutefois, les commandes peuvent aussi exécuter des procédures retournant plusieurs jeux de résultats. Cela peut se produire de différentes manières. Par exemple, la commande peut référencer une procédure stockée retournant plusieurs jeux de résultats. Ou encore, elle peut contenir au moins deux noms d'instruction ou de procédure stockée. Dans ce cas, les instructions ou les procédures sont exécutées séquentiellement et elles retournent des jeux de résultats multiples à l'aide d'un seul appel.

Si vous spécifiez plusieurs instructions ou procédures pour une commande, elles doivent toutes appartenir au même type. Par exemple, vous pouvez exécuter plusieurs instructions SQL ou procédures stockées successives. Toutefois, vous ne pouvez pas mélanger des appels de procédure stockée et des instructions SQL dans la même commande. Pour plus d'informations, consultez Extraction de données à l'aide d'un DataReader (ADO.NET).

Notes

Pour Oracle, le fournisseur de données .NET Framework pour Oracle ne prend pas en charge les instructions SQL par lots. Cependant, il permet l'utilisation de plusieurs paramètres de sortie REF CURSOR pour remplir un groupe de données, chacun dans sa propre table de données. Vous devez définir les paramètres, les marquer comme paramètres de sortie, puis indiquer qu'il s'agit de types de données REF CURSOR. Remarquez que vous ne pouvez pas utiliser la méthode Update lorsque l'objet OracleDataAdapter est rempli à partir de paramètres REF CURSOR vers une procédure stockée, car Oracle ne fournit pas les informations nécessaires pour déterminer le nom de la table et des colonnes lors de l'exécution de l'instruction SQL.

Sécurité

Lorsque vous utilisez des commandes de données avec une propriété CommandType possédant la valeur Text, vérifiez attentivement les informations envoyées par un client avant de les passer à la base de données. Des utilisateurs malveillants peuvent tenter d'envoyer (injecter) des instructions SQL modifiées ou supplémentaires afin d'accéder à la base de données ou de l'endommager. Avant de transférer la saisie d'un utilisateur vers une base de données, vous devez toujours vérifier la validité des informations. Il est recommandé de toujours utiliser des requêtes ou des procédures stockées paramétrées lorsque cela est possible.

Voir aussi

Concepts

Liaison de contrôles à des données dans Visual Studio

Autres ressources

Vue d'ensemble d'applications de données dans Visual Studio

Connexion aux données dans Visual Studio

Préparation de votre application pour recevoir des données

Extraction de données dans votre application

Modification des données dans votre application

Validation des données

Enregistrement des données

Outils permettant d'utiliser des sources de données dans Visual Studio