Baseado no MSDN:
Para instruções UPDATE, INSERT e DELETE, o valor de retorno é o número de linhas afetadas pelo comando. Quando existe um gatilho em uma tabela que está sendo inserida ou atualizada, o valor de retorno inclui o número de linhas afetadas pela operação de inserção ou atualização e o número de linhas afetadas pelo gatilho ou gatilhos. Para todos os outros tipos de instruções, o valor de retorno é -1. Se ocorrer uma reversão, o valor de retorno também será -1.
Você deseja retornar o número de linhas afetadas pelo comando e salvá-lo em um
int
variável, mas como o tipo de instrução é select
então ele retorna -1
. Solução :Se você deseja obter o número de linhas afetadas pelo comando SELECT e salvá-lo em uma variável int, você pode usar
ExecuteScalar
. var theCount = (int)cmd.ExecuteScalar();