Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

ExecuteNonQuery zwraca -1 podczas używania sql COUNT pomimo ciągu zapytania

Na podstawie MSDN:

W przypadku instrukcji UPDATE, INSERT i DELETE zwracaną wartością jest liczba wierszy, których dotyczy polecenie. Gdy w tabeli wstawianej lub aktualizowanej istnieje wyzwalacz, zwracana wartość obejmuje liczbę wierszy, na które ma wpływ zarówno operacja wstawiania lub aktualizowania, jak i liczbę wierszy, na które ma wpływ wyzwalacz lub wyzwalacze. W przypadku wszystkich innych typów instrukcji zwracana wartość wynosi -1. Jeśli nastąpi wycofanie, zwracana wartość również wynosi -1.

Chcesz zwrócić liczbę wierszy, których dotyczy polecenie i zapisać je w int zmienna, ale ponieważ typ instrukcji to select więc zwraca -1 .

Rozwiązanie :Jeśli chcesz uzyskać liczbę wierszy, na które ma wpływ polecenie SELECT i zapisać je w zmiennej int, możesz użyć ExecuteScalar .

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL, jak łączyć wyniki?

  2. Wydajność SQL count(*)

  3. Błąd serwera SQL 213:Nazwa kolumny lub liczba podanych wartości nie jest zgodna z definicją tabeli.

  4. Jak ustawić domyślny język dla wszystkich nowych loginów w SQL Server (T-SQL)

  5. Zalecane procesory Intel dla obciążeń SQL Server 2014