Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ExecuteNonQuery gibt -1 zurück, wenn sql COUNT trotz der Abfragezeichenfolge verwendet wird

Basierend auf MSDN:

Bei UPDATE-, INSERT- und DELETE-Anweisungen ist der Rückgabewert die Anzahl der vom Befehl betroffenen Zeilen. Wenn ein Trigger in einer Tabelle vorhanden ist, die eingefügt oder aktualisiert wird, enthält der Rückgabewert die Anzahl der Zeilen, die sowohl von der Einfüge- als auch der Aktualisierungsoperation betroffen sind, sowie die Anzahl der Zeilen, die von dem Trigger oder den Triggern betroffen sind. Bei allen anderen Arten von Anweisungen ist der Rückgabewert -1. Bei einem Rollback ist der Rückgabewert ebenfalls -1.

Sie möchten die Anzahl der vom Befehl betroffenen Zeilen zurückgeben und in einem int speichern Variable, aber da der Typ der Anweisung select ist also gibt es -1 zurück .

Lösung :Wenn Sie die Anzahl der vom SELECT-Befehl betroffenen Zeilen erhalten und in einer int-Variablen speichern möchten, können Sie ExecuteScalar verwenden .

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