Basado en MSDN:
Para las instrucciones UPDATE, INSERT y DELETE, el valor devuelto es el número de filas afectadas por el comando. Cuando existe un activador en una tabla que se está insertando o actualizando, el valor devuelto incluye el número de filas afectadas por la operación de inserción o actualización y el número de filas afectadas por el activador o los activadores. Para todos los demás tipos de sentencias, el valor de retorno es -1. Si se produce una reversión, el valor devuelto también es -1.
Desea devolver el número de filas afectadas por el comando y guardarlo en un int
variable pero dado que el tipo de declaración es select
por lo que devuelve -1
.
Solución :si desea obtener el número de filas afectadas por el comando SELECT y guardarlo en una variable int, puede usar ExecuteScalar
.
var theCount = (int)cmd.ExecuteScalar();