Quelle est la différence entre ExecuteScalar, ExecuteReader et ExecuteNonQuery?

Quels sont les différents cas où nous utilisons ces trois? Où devrais-je en utiliser un et où devrais-je pas?

  • ExecuteScalar est généralement utilisé lorsque votre requête renvoie une valeur unique. Si elle renvoie 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 ():

  1. fonctionnera uniquement avec les requêtes d’action (Créer, Modifier, Supprimer, Insérer, Mettre à jour, Supprimer).
  2. Renvoie le nombre de lignes affectées par la requête.
  3. Le type de retour est int
  4. La valeur de retour est facultative et peut être affectée à une variable entière.

ExecuteReader ():

  1. travaillera avec les requêtes Action et Non-Action (Select)
  2. Renvoie la collection de lignes sélectionnée par la requête.
  3. Le type de retour est DataReader.
  4. La valeur de retour est obligatoire et doit être affectée à un autre object DataReader.

ExecuteScalar ():

  1. travaillera avec des requêtes non-action contenant des fonctions d’agrégat.
  2. Renvoie la première ligne et la première valeur de colonne du résultat de la requête.
  3. Le type de retour est object.
  4. La valeur de retour est obligatoire et doit être affectée à une variable de type requirejs.

URL de référence:

http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html

Chacune est une exécution de type différente.

  • ExecuteScalar sera le type de requête qui renverra une seule valeur.

    Un exemple serait de retourner 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 sur une ligne à la fois.

    Un exemple serait de tirer 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 valeur, mais qui exécute une forme de travail telle que l’insertion d’une suppression ou d’une modification.

    Un exemple serait la mise à jour du profil d’un utilisateur dans la firebase database.

    UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'

À partir des documents (note: MSDN est une ressource pratique lorsque vous voulez savoir ce que font les choses!):

ExécuterScalar

Utilisez la méthode ExecuteScalar pour extraire une valeur unique (par exemple, une valeur agrégée) à partir d’une firebase database. Cela nécessite moins de code que d’utiliser la méthode ExecuteReader, puis d’effectuer les opérations nécessaires pour générer la valeur unique à l’aide des données renvoyées par SqlDataReader.

ExecuteReader

Envoie le CommandText à la connexion et génère un SqlDataReader.

… et de SqlDataReader …

Permet de lire un stream de lignes en avant uniquement depuis une firebase database SQL Server. Cette classe ne peut pas être héritée.

ExécuterNonQuery

Vous pouvez utiliser ExecuteNonQuery pour effectuer des opérations de catalogue (par exemple, interroger la structure d’une firebase database ou créer des objects de firebase database tels que des tables) ou modifier les données d’une firebase database sans utiliser DataSet en exécutant des instructions UPDATE, INSERT ou DELETE.

Pour append à 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 un membre SELECT * FROM, mais vous obtenez uniquement la première cellule des lignes résultantes. Utilisée généralement pour les requêtes qui renvoient une seule valeur. Je ne suis pas sûr à 100% de SQLServer mais dans Oracle, vous ne l’ utiliseriez pas pour exécuter une FUNCTION (un code de firebase database renvoyant une seule valeur) et espérer qu’elle vous donnerait la valeur de retour même si les fonctions renvoient des valeurs uniques. Cependant, si vous exécutez la fonction dans le cadre d’une requête, par exemple SELECT SUBSTR (‘abc’, 1, 1) FROM DUAL, la valeur de retour sera donnée car la valeur de retour est stockée dans le coin supérieur gauche. cellule du jeu de lignes résultant

ExecuteNonQuery serait utilisé pour exécuter des procédures stockées de firebase database, des fonctions et des requêtes qui modifient des données (INSERT / UPDATE / DELETE) ou modifient la structure de firebase database (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 vérifiez la documentation de la firebase database pour vous en assurer.

ExecuteReader() exécute une requête SQL qui renvoie l’object DBDataReader du fournisseur de données qui fournit uniquement un access en lecture seule et en lecture seule pour le résultat de la requête.

ExecuteScalar() est similaire à la méthode ExecuteReader() conçue pour les requêtes singleton telles que l’obtention d’un nombre d’enregistrements.

ExecuteNonQuery() exécute une requête qui fonctionne avec create, delete, update, insert)

ExécuterNonQuery

Cette méthode ExecuteNonQuery ne sera utilisée que pour insérer, mettre à jour et supprimer, créer et définir des instructions SET. La méthode ExecuteNonQuery renvoie le nombre de lignes effectuées avec les opérations INSERT, DELETE ou UPDATE.

ExécuterScalar

Il est très rapide de récupérer des valeurs uniques à partir d’une firebase database. Execute Scalar renverra une valeur de colonne unique à une seule ligne, 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 object 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 object de commande. Celui-ci est uniquement l’extraction des enregistrements vers l’avant et il est utilisé pour lire les valeurs de la table du premier au dernier.

La méthode ExecuteNonQuery renvoie le nombre de lignes effectuées avec les opérations INSERT, DELETE ou UPDATE. Cette méthode ExecuteNonQuery ne sera utilisée que pour insérer, mettre à jour et supprimer, créer et définir des instructions SET. (Lire la suite)

ExecuteScalar renvoie une valeur de colonne unique à une seule ligne, 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 object de commande. Il est très rapide de récupérer des valeurs uniques à partir d’une firebase database. (Lire la suite)

ExecuteReader 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 object de commande. Celui-ci est uniquement l’extraction des enregistrements vers l’avant et il est utilisé pour lire les valeurs de la table du premier au dernier. (Lire la suite)

ExecuteNonQuery: est généralement utilisé lorsqu’il n’y a rien renvoyé par les instructions SQL 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, vous pouvez cliquer ici http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery