Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

ExecuteNonQuery retornando -1 ao usar sql COUNT apesar da string de consulta


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