Quels sont les différents cas où nous utilisons ces trois? Où devrais-je en utiliser un et où ne devrais-je pas?
ExecuteScalar
est généralement utilisé lorsque votre requête renvoie une valeur unique. S'il en retourne plus, le résultat est la première colonne de la première ligne. Un exemple pourrait être SELECT @@IDENTITY AS 'Identity'
.ExecuteReader
est utilisé pour tout jeu de résultats comportant plusieurs lignes/colonnes (par exemple, SELECT col1, col2 from sometable
).ExecuteNonQuery
est généralement utilisé pour les instructions SQL sans résultat (par exemple, UPDATE, INSERT, etc.).ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
URL de référence:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
Chacun est un type d'exécution différent.
ExecuteScalar va être le type de requête qui retournera une valeur unique.
Un exemple renverrait un identifiant généré après l'insertion.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.'); SELECT CAST(scope_identity() AS int)
ExecuteReader vous donne un lecteur de données qui vous permettra de lire toutes les colonnes des résultats, une ligne à la fois.
Un exemple consisterait à extraire des informations de profil pour un ou plusieurs utilisateurs.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery est un code SQL qui ne renvoie pas de valeurs, mais effectue en réalité une forme de travail comme l'insertion, la suppression ou la modification de quelque chose.
Un exemple consisterait à mettre à jour le profil d'un utilisateur dans la base de données.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
À partir de la documentation (note: MSDN est une ressource pratique pour savoir ce que font les choses!):
Utilisez la méthode ExecuteScalar pour extraire une valeur unique (par exemple, une valeur agrégée) d'une base de données. Cela nécessite moins de code que l'utilisation de la méthode ExecuteReader, puis l'exécution des opérations nécessaires à la génération de la valeur unique à l'aide des données renvoyées par un SqlDataReader.
Envoie le CommandText à la connexion et crée un SqlDataReader.
... et de SqlDataReader ...
Fournit un moyen de lire un flux de lignes vers l'avant à partir d'une base de données SQL Server. Cette classe ne peut pas être héritée.
Vous pouvez utiliser ExecuteNonQuery pour effectuer des opérations de catalogue (par exemple, interroger la structure d'une base de données ou créer des objets de base de données tels que des tables) ou pour modifier les données d'une base de données sans utiliser de DataSet en exécutant les instructions UPDATE, INSERT ou DELETE.
Pour ajouter à ce que d'autres ont posté:
ExecuteScalar renvoie conceptuellement la colonne la plus à gauche de la première ligne du jeu de résultats de la requête; vous pouvez exécuter ExecuteScalar une portée SELECT * FROM, mais vous obtiendrez uniquement la première cellule des lignes résultantes. Généralement utilisé pour les requêtes qui renvoient une valeur unique. Je ne suis pas sûr à 100% de SQLServer mais dans Oracle, vous ne voudriez pas l'utiliser pour exécuter une FONCTION (un code de base de données qui renvoie une valeur unique) et espérez qu'il vous fournisse la valeur de retour de la fonction même si les fonctions renvoient des valeurs uniques .. Toutefois, si vous exécutez la fonction dans le cadre d’une requête, par exemple: SELECT SUBSTR ('abc', 1, 1) FROM DUAL donne alors la valeur de retour en vertu du fait que la valeur de retour est stockée dans la cellule la plus à gauche du jeu de lignes résultant.
ExecuteNonQuery serait utilisé pour exécuter des procédures, fonctions et requêtes stockées dans la base de données modifiant les données (INSERT/UPDATE/DELETE) ou modifiant la structure de la base de données (CREATE TABLE ...). En règle générale, la valeur de retour de l'appel indique le nombre de lignes affectées par l'opération, mais consultez la documentation de la base de données pour vous en assurer.
ExecuteReader()
exécute une requête SQL qui renvoie l'objet DBDataReader du fournisseur de données qui fournit un accès en lecture seule et en lecture seule au résultat de la requête.
ExecuteScalar()
est similaire à la méthode ExecuteReader()
conçue pour les requêtes uniques, telles que l'obtention d'un nombre d'enregistrements.
ExecuteNonQuery()
exécuter une requête qui ne fonctionne pas avec créer, supprimer, mettre à jour, insérer)
La méthode ExecuteNonQuery renverra le nombre de lignes effectuées avec les opérations INSERT, DELETE ou UPDATE. Cette méthode ExecuteNonQuery sera utilisée uniquement pour les instructions insert, update et delete, create et SET. (Lire la suite)
ExecuteScalar renverra une valeur de colonne unique à ligne unique, c'est-à-dire une valeur unique, lors de l'exécution d'une requête SQL ou d'une procédure stockée à l'aide d'un objet de commande. Il est très rapide de récupérer des valeurs uniques dans une base de données. (Lire la suite)
ExecuteReader sera utilisé pour renvoyer l'ensemble de lignes lors de l'exécution d'une requête SQL ou d'une procédure stockée à l'aide d'un objet de commande. Celui-ci sert uniquement à la récupération des enregistrements et permet de lire les valeurs de la table du premier au dernier. (Lire la suite)
ExecuteNonQuery
Cette méthode ExecuteNonQuery sera utilisée uniquement pour les instructions insert, update et delete, create et SET. La méthode ExecuteNonQuery renverra le nombre de lignes effectuées avec les opérations INSERT, DELETE ou UPDATE.
ExecuteScalar
Il est très rapide de récupérer des valeurs uniques dans une base de données. Execute Scalar renverra une valeur de colonne unique à ligne unique, c'est-à-dire une valeur unique, lors de l'exécution d'une requête SQL ou d'une procédure stockée à l'aide d'un objet de commande. ExecuteReader
Execute Reader sera utilisé pour renvoyer le jeu de lignes lors de l'exécution d'une requête SQL ou d'une procédure stockée à l'aide d'un objet de commande. Celui-ci sert uniquement à la récupération des enregistrements et permet de lire les valeurs de la table du premier au dernier.
ExecuteNonQuery: est généralement utilisé quand les instructions SQL ne renvoient rien, telles que les opérations insert, update, delete.
cmd.ExcecuteNonQuery();
ExecuteScalar:
Il sera utilisé lorsque la requête SQL renvoie une valeur unique.
Int b = cmd.ExcecuteScalar();
ExecuteReader
Il sera utilisé lorsque la requête SQL ou la procédure stockée renvoie plusieurs lignes/colonnes.
SqlDataReader dr = cmd.ExecuteReader();
pour plus d'informations, cliquez ici http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery