Saltar al contenido

al colocar varios comandos sql que muestran un error: ya hay un DataReader abierto asociado con este comando que debe cerrarse primero

Esta cuestión se puede abordar de diversas maneras, pero en este caso te dejamos la resolución más completa en nuestra opinión.

Solución:

Necesitas cambiar tu conexión string y agrega esta opción

 "MultipleActiveResultSets=True;"

A partir de SQL Server 2005 existe la opción MARS.
Con MARS un solo abrió La conexión podría servir a más de un comando a la vez. Entonces, por ejemplo, su conexión string debería ser así

"Server=myServerAddress;" + 
"Database=myDataBase;" + 
"Trusted_Connection=True;" +
"MultipleActiveResultSets=true;"

Ver los documentos en MARS

en un ‘normal’ configuración, cuando un SqlDataReader está abierto, SqlConnection está ocupado sirviendo al lector y no puede aceptar otros comandos.
(Ver comentarios en el enlace a SqlDataReader).

Su código anterior tiene un lector abierto cuando intenta emitir un comando usando la misma conexión.
Hay soluciones alternativas como llenar un conjunto de datos y luego recorrerlo (pero para conjuntos grandes esto afectará el rendimiento), por lo que el equipo de SQL de Microsoft presentó MARS

valoraciones y reseñas

Finalizando este artículo puedes encontrar las explicaciones de otros administradores, tú de igual manera puedes insertar el tuyo si te apetece.

¡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 *