Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

ExecuteNonQuery che restituisce -1 quando si usa sql COUNT nonostante la stringa di query

Basato su MSDN:

Per le istruzioni UPDATE, INSERT e DELETE, il valore restituito è il numero di righe interessate dal comando. Quando esiste un trigger su una tabella in fase di inserimento o aggiornamento, il valore restituito include il numero di righe interessate dall'operazione di inserimento o aggiornamento e il numero di righe interessate dal trigger o dai trigger. Per tutti gli altri tipi di istruzioni, il valore restituito è -1. Se si verifica un rollback, anche il valore restituito è -1.

Vuoi restituire il numero di righe interessate dal comando e salvarlo in un int variabile ma poiché il tipo di istruzione è select quindi restituisce -1 .

Soluzione :Se vuoi ottenere il numero di righe interessate dal comando SELECT e salvarlo in una variabile int puoi usare ExecuteScalar .

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