Foros del Web » Programando para Internet » ASPX (.net) »

Problema con DataReader y Multiples Ejecuciones

Estas en el tema de Problema con DataReader y Multiples Ejecuciones en el foro de ASPX (.net) en Foros del Web. Holas a todos y a todas... Mi problema es que cuando se ejecuta una página que tenga asociado un DataReader y otro usuario desde otro ...
  #1 (permalink)  
Antiguo 11/10/2005, 08:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 9
Antigüedad: 19 años, 11 meses
Puntos: 0
Problema con DataReader y Multiples Ejecuciones

Holas a todos y a todas...

Mi problema es que cuando se ejecuta una página que tenga asociado un DataReader y otro usuario desde otro equipo desea hacer una consultar que tambien utiliza un DataReader retorna el siguiente error:

Código:
[InvalidOperationException: Ya hay un DataReader abierto asociado a esta conexión, debe cerrarlo primero.]
   Gestion.Clientes.GetCliente(EnumCliente Cliente) in c:\inetpub\wwwroot\Gestion\ClientesX.vb:51

he oido hablar de MARS (Multiple Active Result Sets), pero no estoy muy seguro que funcione con SQLServer 2000... si hay otra forma de hacerlo, por favor!!!

Saludos.
  #2 (permalink)  
Antiguo 11/10/2005, 11:38
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Les sucede eso porque no están cerrando los DataReaders, ya que sólo se permite un DataReader por conexión a la vez.
Por ejm, el siguiente código no manda error (al menos en mi caso ):
Código:
            SqlConnection conn=new SqlConnection("server=.;uid=sa;database=Northwind");
             SqlCommand com1=new SqlCommand("Select * from customers", conn);
             SqlCommand com2=new SqlCommand("Select * from categories", conn);
             IDataReader rd1, rd2;
 
             conn.Open();
             rd1 = com1.ExecuteReader();
             while (rd1.Read())
             {
                 Console.WriteLine(rd1["ContactTitle"]);
             }
             rd1.Close();
             rd2 = com2.ExecuteReader();
             while(rd2.Read())
             {
                 Console.WriteLine(rd2["CategoryName"]);
             }
             rd2.Close();
             conn.Close();
Para evitar problemas es mejor trabajar con estructuras Try/Catch/Finally, otra alternativa para evitar el problema que mencionas es usar la instrucción using (c#)

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:31.