Въз основа на MSDN:
За изразите UPDATE, INSERT и DELETE връщаната стойност е броят на редовете, засегнати от командата. Когато съществува тригер в таблица, която се вмъква или актуализира, връщаната стойност включва броя на редовете, засегнати както от операцията вмъкване или актуализиране, така и броя на редовете, засегнати от тригера или тригерите. За всички други типове изрази връщаната стойност е -1. Ако възникне връщане назад, връщаната стойност също е -1.
Искате да върнете броя на редовете, засегнати от командата, и да го запишете в int
променлива, но тъй като типът на израза е select
така че връща -1
.
Решение :Ако искате да получите броя на редовете, засегнати от командата SELECT, и да го запишете в променлива int, можете да използвате ExecuteScalar
.
var theCount = (int)cmd.ExecuteScalar();