sql >> Base de Datos >  >> RDS >> Sqlserver

ExecuteNonQuery devuelve -1 cuando se usa sql COUNT a pesar de la cadena de consulta

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