DataReader asociado con este comando que debe cerrarse primero
-
05-07-2019 - |
Pregunta
Recibo el siguiente error;
" Ya hay un DataReader abierto asociado con este comando que debe cerrarse primero. "
es porque he usado el lector en foreach loop? ¿O cuál podría ser el problema? Saludos BK
foreach( Apple a in listApple )
{
....
using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
{
while (reader.Read())
{
a.blablabla += reader.GetInt32("BLA_BLA_BLA");
}
}
.....
}
Solución
Prueba lo siguiente:
using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
{
while (reader.Read())
{
a.blablabla += reader.GetInt32("BLA_BLA_BLA");
}
reader.Close();
}
Otros consejos
¿Ha implementado SmartSqlReader para que se cierre cuando se elimine? Los lectores de datos regulares implementan la interfaz IDisposable y llaman a Cerrar desde el método de Disposición.
Si no lo cierra correctamente, mantendrá el objeto Comando ocupado hasta que el recolector de basura encuentre el lector y lo limpie.
Agregue reader.Close ()
para cerrar el SmartSqlReader
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow