Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

ExecuteNonQuery renvoyant -1 lors de l'utilisation de sql COUNT malgré la chaîne de requête

Basé sur MSDN :

Pour les instructions UPDATE, INSERT et DELETE, la valeur de retour est le nombre de lignes affectées par la commande. Lorsqu'un déclencheur existe sur une table en cours d'insertion ou de mise à jour, la valeur de retour inclut le nombre de lignes affectées à la fois par l'opération d'insertion ou de mise à jour et le nombre de lignes affectées par le ou les déclencheurs. Pour tous les autres types d'instructions, la valeur de retour est -1. Si une annulation se produit, la valeur de retour est également -1.

Vous souhaitez renvoyer le nombre de lignes affectées par la commande et l'enregistrer dans un int variable mais puisque le type d'instruction est select il renvoie donc -1 .

Solution  :Si vous souhaitez obtenir le nombre de lignes affectées par la commande SELECT et l'enregistrer dans une variable int, vous pouvez utiliser ExecuteScalar .

var theCount = (int)cmd.ExecuteScalar();