Vue d'ensemble du remplissage des groupes de données et de l'interrogation des données

Mise à jour : novembre 2007

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 programme, 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.

Pour plus d'informations sur le sujet suivant

Consultez

Le remplissage d'un groupe de données à l'aide d'un TableAdapter

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

TableAdapters

Vue d'ensemble de TableAdapter

Le remplissage d'un groupe de données à l'aide d'un adaptateur de données

Remplissage d'un DataSet à partir d'un DataAdapter (ADO.NET)

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'Assistant Configuration de source de données), 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 3,5 ; 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'Assistant Configuration de requêtes TableAdapter 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).

Remarque :

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

Autres ressources

Mise en route avec l'accès aux données

Connexion aux données dans Visual Studio

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

Extraction de données dans votre application

Affichage des données sur des formulaires dans les applications Windows

Modification des données dans votre application

Validation des données

Enregistrement des données

Ressources de données