ExecuteScalarest généralement utilisé lorsque votre requête renvoie une valeur unique. S'il renvoie plus, le résultat est la première colonne de la première ligne. Un exemple pourrait êtreSELECT @@IDENTITY AS 'Identity' .
ExecuteReaderest utilisé pour tout ensemble de résultats avec plusieurs lignes / colonnes (par exemple, SELECT col1, col2 from sometable).
ExecuteNonQuery est généralement utilisé pour les instructions SQL sans résultats (par exemple, UPDATE, INSERT, etc.).
ExecuteScalar sera le type de requête qui retournera une valeur unique.
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 une ligne à la fois.
Un exemple serait l'extraction des informations de profil pour un ou plusieurs utilisateurs.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery est tout SQL qui ne renvoie pas de valeurs, mais qui effectue en fait une forme de travail comme l'insertion de suppression ou de modification de quelque chose.
Un exemple serait la mise à jour du profil d'un utilisateur dans la base de données.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
Il semble que vous puissiez utiliser ExecuteReader pour effectuer les tâches effectuées à la fois par ExecuteScalar et ExecuteNonQuery, alors pourquoi utiliser les deux autres? un avantage de performance?
user20358
Une raison d'éviter de surutiliser ExecuteReader est qu'il gardera ce lecteur dans les parages jusqu'à ce que vous en ayez terminé. Avec tout cela, vous voulez connaître certaines informations spécifiques sur leur fonctionnement afin de les utiliser le plus efficacement possible. Ce que j'ai décrit ici, ce sont de bonnes lignes directrices.
Brendan Enrick
9
À partir de la documentation (note: MSDN est une ressource pratique lorsque vous voulez savoir ce que font les choses!):
Utilisez la méthode ExecuteScalar pour récupérer une valeur unique (par exemple, une valeur agrégée) à partir d'une base de données. Cela nécessite moins de code que d'utiliser la méthode ExecuteReader, puis d'effectuer les opérations dont vous avez besoin pour générer la valeur unique à l'aide des données renvoyées par un SqlDataReader.
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 un DataSet en exécutant des instructions UPDATE, INSERT ou DELETE.
ExecuteScalar renvoie conceptuellement la colonne la plus à gauche de la première ligne de l'ensemble de résultats de la requête; vous pouvez ExecuteScalar une portée SELECT * FROM, mais vous n'obtiendrez que la première cellule des lignes résultantes Généralement utilisée pour les requêtes qui renvoient une valeur unique. 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 base de données qui renvoie une valeur unique) et vous attendez à ce qu'il vous donne la valeur de retour de la fonction 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, alors cela donnerait la valeur de retour en vertu du fait que la valeur de retour est stockée dans le coin supérieur gauche cellule de l'ensemble de lignes résultant
ExecuteNonQuery serait utilisé pour exécuter des procédures stockées de base de données, des fonctions et des requêtes qui modifient les données (INSERT / UPDATE / DELETE) ou modifient la structure de la base de données (CREATE TABLE ...). En général, la valeur de retour de l'appel est une indication du nombre de lignes affectées par l'opération, mais consultez la documentation de la base de données pour garantir cela
ExecuteReader() exécute une requête SQL qui renvoie l'objet DBDataReader du fournisseur de données qui fournit un accès direct et en lecture seule pour le résultat de la requête.
ExecuteScalar()est similaire à la ExecuteReader()méthode conçue pour les requêtes singleton telles que l'obtention d'un nombre d'enregistrements.
ExecuteNonQuery() exécuter une non requête qui fonctionne avec créer, supprimer, mettre à jour, insérer)
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.
ExécuterScalaire
Il est très rapide de récupérer des valeurs uniques de la base de données. Execute Scalar retournera une valeur de colonne unique sur une seule ligne, c'est-à-dire une valeur unique, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande.
ExecuteReader
Execute Reader sera utilisé pour renvoyer l'ensemble des lignes, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Celui-ci est uniquement la récupération des enregistrements et il est utilisé pour lire les valeurs de la table du premier au dernier.
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 retournera une valeur de colonne unique sur une seule ligne, c'est-à-dire une valeur unique, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Il est très rapide de récupérer des valeurs uniques de la base de données. (Lire la suite)
ExecuteReader sera utilisé pour renvoyer l'ensemble de lignes, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Celui-ci est uniquement la récupération des enregistrements et il est utilisé pour lire les valeurs de la table du premier au dernier. (Lire la suite)
ExecuteNonQuery: est généralement utilisé lorsque rien n'est renvoyé par les instructions SQL telles que les opérations d'insertion, de mise à jour, de suppression.
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 retourne plusieurs lignes / colonnes
Réponses:
ExecuteScalar
est généralement utilisé lorsque votre requête renvoie une valeur unique. S'il renvoie plus, le résultat est la première colonne de la première ligne. Un exemple pourrait êtreSELECT @@IDENTITY AS 'Identity'
.ExecuteReader
est utilisé pour tout ensemble de résultats avec plusieurs lignes / colonnes (par exemple,SELECT col1, col2 from sometable
).ExecuteNonQuery
est généralement utilisé pour les instructions SQL sans résultats (par exemple, UPDATE, INSERT, etc.).la source
ExecuteNonQuery
peut renvoyer le nombre de lignes affectées.ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
URL de référence:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
la source
Chacun est une exécution de type différent.
ExecuteScalar sera le type de requête qui retournera une valeur unique.
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 une ligne à la fois.
Un exemple serait l'extraction des informations de profil pour un ou plusieurs utilisateurs.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery est tout SQL qui ne renvoie pas de valeurs, mais qui effectue en fait une forme de travail comme l'insertion de suppression ou de modification de quelque chose.
Un exemple serait la mise à jour du profil d'un utilisateur dans la base de données.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
la source
À partir de la documentation (note: MSDN est une ressource pratique lorsque vous voulez savoir ce que font les choses!):
ExécuterScalaire
ExecuteReader
... et depuis SqlDataReader ...
ExecuteNonQuery
la source
Pour ajouter à ce que d'autres ont publié:
ExecuteScalar renvoie conceptuellement la colonne la plus à gauche de la première ligne de l'ensemble de résultats de la requête; vous pouvez ExecuteScalar une portée SELECT * FROM, mais vous n'obtiendrez que la première cellule des lignes résultantes Généralement utilisée pour les requêtes qui renvoient une valeur unique. 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 base de données qui renvoie une valeur unique) et vous attendez à ce qu'il vous donne la valeur de retour de la fonction 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, alors cela donnerait la valeur de retour en vertu du fait que la valeur de retour est stockée dans le coin supérieur gauche cellule de l'ensemble de lignes résultant
ExecuteNonQuery serait utilisé pour exécuter des procédures stockées de base de données, des fonctions et des requêtes qui modifient les données (INSERT / UPDATE / DELETE) ou modifient la structure de la base de données (CREATE TABLE ...). En général, la valeur de retour de l'appel est une indication du nombre de lignes affectées par l'opération, mais consultez la documentation de la base de données pour garantir cela
la source
ExecuteReader()
exécute une requête SQL qui renvoie l'objet DBDataReader du fournisseur de données qui fournit un accès direct et en lecture seule pour le résultat de la requête.ExecuteScalar()
est similaire à laExecuteReader()
méthode conçue pour les requêtes singleton telles que l'obtention d'un nombre d'enregistrements.ExecuteNonQuery()
exécuter une non requête qui fonctionne avec créer, supprimer, mettre à jour, insérer)la source
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.
ExécuterScalaire
Il est très rapide de récupérer des valeurs uniques de la base de données. Execute Scalar retournera une valeur de colonne unique sur une seule ligne, c'est-à-dire une valeur unique, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. ExecuteReader
Execute Reader sera utilisé pour renvoyer l'ensemble des lignes, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Celui-ci est uniquement la récupération des enregistrements et il est utilisé pour lire les valeurs de la table du premier au dernier.
la source
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 retournera une valeur de colonne unique sur une seule ligne, c'est-à-dire une valeur unique, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Il est très rapide de récupérer des valeurs uniques de la base de données. (Lire la suite)
ExecuteReader sera utilisé pour renvoyer l'ensemble de lignes, lors de l'exécution de la requête SQL ou de la procédure stockée à l'aide de l'objet de commande. Celui-ci est uniquement la récupération des enregistrements et il est utilisé pour lire les valeurs de la table du premier au dernier. (Lire la suite)
la source
ExecuteNonQuery: est généralement utilisé lorsque rien n'est renvoyé par les instructions SQL telles que les opérations d'insertion, de mise à jour, de suppression.
ExecuteScalar:
Il sera utilisé lorsque la requête SQL renvoie une valeur unique.
ExecuteReader
Il sera utilisé lorsque la requête SQL ou la procédure stockée retourne plusieurs lignes / colonnes
pour plus d'informations, vous pouvez cliquer ici http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery
la source