Saltar al contenido

ExecuteNonQuery no devuelve resultados

Solución:

¿Qué tipo de consulta realizas? Utilizando ExecuteNonQuery está destinado a UPDATE, INSERT y DELETE consultas. Según la documentación:

Para las declaraciones UPDATE, INSERT y DELETE, el valor de retorno es el número de filas afectadas por el comando. Cuando existe un desencadenante en una tabla que se está insertando o actualizando, el valor de retorno 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 desencadenante o desencadenadores. Para todos los demás tipos de declaraciones, el valor de retorno es -1.

Siempre que desee ejecutar una declaración SQL que no debería devolver un valor o un conjunto de registros, se debería utilizar ExecuteNonQuery.

Por lo tanto, si desea ejecutar una declaración de actualización, eliminación o inserción, debe usar ExecuteNonQuery. ExecuteNonQuery devuelve el número de filas afectadas por la instrucción. Esto suena muy bien, pero cada vez que usa el IDE de SQL Server 2005 o Visual Studio para crear un procedimiento almacenado, agrega una pequeña línea que arruina todo.

Esa línea es: SET NOCOUNT ON; Esta línea activa la función NOCOUNT de SQL Server, que “evita que el mensaje que indica el número de filas afectadas por una instrucción Transact-SQL se devuelva como parte de los resultados” y, por lo tanto, hace que el procedimiento almacenado siempre devuelva -1 cuando llamado desde la aplicación (en mi caso una aplicación web).

En conclusión, elimine esa línea de su procedimiento almacenado y ahora obtendrá un valor que indica el número de filas afectadas por la declaración.

¡Feliz programación!

http://aspsoft.blogs.com/jonas/2006/10/executenonquery.html

Tu usas EXECUTENONQUERY() por INSERT,UPDATE y DELETE.

Pero para SELECT debes usar EXECUTEREADER()………

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *