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();