Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Ya hay un Datareader abierto a este command, debe cerrarlo primero

Estas en el tema de Ya hay un Datareader abierto a este command, debe cerrarlo primero en el foro de .NET en Foros del Web. Hola; Estoy ejecutando lo siguiente y me da este error: Ya hay un DataReader asociado a este command, debe cerrarlo primero . Me podéis echar ...
  #1 (permalink)  
Antiguo 03/01/2013, 03:58
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Exclamación Ya hay un Datareader abierto a este command, debe cerrarlo primero

Hola;
Estoy ejecutando lo siguiente y me da este error: Ya hay un DataReader asociado a este command, debe cerrarlo primero. Me podéis echar una mano? no se lo que estoy haciendo mal ni se como cerrar el DataReader.
Código vb.net:
Ver original
  1. Protected Sub eliminarDatos(ByRef ident As String)
  2.         Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("conexion").ConnectionString)
  3.  
  4.         Dim comm1 As SqlCommand = New SqlCommand("DELETE FROM dbo.temp_datosGuardados WHERE id_identificador = @id_identificador", conn)
  5.         Dim reader1 As SqlDataReader
  6.         Dim mytrans As SqlTransaction
  7.  
  8.         Try
  9.             With comm1
  10.                 .CommandType = CommandType.Text
  11.                 .Parameters.AddWithValue("id_identificador", ident)
  12.             End With
  13.  
  14.             Using conn
  15.  
  16.                 conn.Open()
  17.                 mytrans = conn.BeginTransaction()
  18.  
  19.                 Try
  20.                     With comm1
  21.                         .Transaction = mytrans
  22.                         reader1 = .ExecuteReader()
  23.                         While reader1.Read()
  24.                             .ExecuteNonQuery()
  25.                             .Dispose()
  26.                         End While
  27.                         mytrans.Commit()
  28.                     End With
  29.                 Catch ex As Exception
  30.  
  31.                     mytrans.Rollback()
  32.                     MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  33.                     'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  34.                 End Try
  35.             End Using
  36.  
  37.         Catch ex As Exception
  38.  
  39.             MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  40.             'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  41.         Finally
  42.             conn.Close()
  43.             conn.Dispose()
  44.         End Try
  45.     End Sub
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 03/01/2013, 07:54
Avatar de jhonjairo00  
Fecha de Ingreso: noviembre-2010
Ubicación: Bogotá D.C.
Mensajes: 31
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Ya hay un Datareader abierto a este command, debe cerrarlo primero

Hola

Inténtalo así

Código vb:
Ver original
  1. Protected Sub eliminarDatos(ByRef ident As String)
  2.         Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("conexion").ConnectionString)
  3.  
  4.         Dim comm1 As SqlCommand = New SqlCommand("DELETE FROM dbo.temp_datosGuardados WHERE id_identificador = @id_identificador", conn)
  5.         'Dim reader1 As SqlDataReader
  6.        Dim mytrans As SqlTransaction
  7.  
  8.         Try
  9.             With comm1
  10.                 .CommandType = CommandType.Text
  11.                 .Parameters.AddWithValue("id_identificador", ident)
  12.             End With
  13.  
  14.             Using conn
  15.  
  16.                 conn.Open()
  17.                 mytrans = conn.BeginTransaction()
  18.  
  19.                 Try
  20.                     With comm1
  21.                         .Transaction = mytrans
  22.                         'reader1 = .ExecuteReader()
  23.                        'While reader1.Read()
  24.                        .ExecuteNonQuery()
  25.                         .Dispose()
  26.                         'End While
  27.                        mytrans.Commit()
  28.                     End With
  29.                 Catch ex As Exception
  30.  
  31.                     mytrans.Rollback()
  32.                     MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  33.                     'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  34.                End Try
  35.             End Using
  36.  
  37.         Catch ex As Exception
  38.  
  39.             MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  40.             'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  41.        Finally
  42.             conn.Close()
  43.             conn.Dispose()
  44.         End Try
  45.     End Sub

Lo único que hice fue comentar en donde usas el reader, ya que cómo no vas a capturar datos no es necesario usarlo...

Espero te sirva

Saludos.
  #3 (permalink)  
Antiguo 03/01/2013, 08:54
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Respuesta: Ya hay un Datareader abierto a este command, debe cerrarlo primero

Cita:
Iniciado por jhonjairo00 Ver Mensaje
Hola

Inténtalo así

Código vb:
Ver original
  1. Protected Sub eliminarDatos(ByRef ident As String)
  2.         Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("conexion").ConnectionString)
  3.  
  4.         Dim comm1 As SqlCommand = New SqlCommand("DELETE FROM dbo.temp_datosGuardados WHERE id_identificador = @id_identificador", conn)
  5.         'Dim reader1 As SqlDataReader
  6.        Dim mytrans As SqlTransaction
  7.  
  8.         Try
  9.             With comm1
  10.                 .CommandType = CommandType.Text
  11.                 .Parameters.AddWithValue("id_identificador", ident)
  12.             End With
  13.  
  14.             Using conn
  15.  
  16.                 conn.Open()
  17.                 mytrans = conn.BeginTransaction()
  18.  
  19.                 Try
  20.                     With comm1
  21.                         .Transaction = mytrans
  22.                         'reader1 = .ExecuteReader()
  23.                        'While reader1.Read()
  24.                        .ExecuteNonQuery()
  25.                         .Dispose()
  26.                         'End While
  27.                        mytrans.Commit()
  28.                     End With
  29.                 Catch ex As Exception
  30.  
  31.                     mytrans.Rollback()
  32.                     MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  33.                     'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  34.                End Try
  35.             End Using
  36.  
  37.         Catch ex As Exception
  38.  
  39.             MsgBox("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  40.             'mensaje("Error en BD" & Chr(13) & Chr(13) & ex.Message)
  41.        Finally
  42.             conn.Close()
  43.             conn.Dispose()
  44.         End Try
  45.     End Sub

Lo único que hice fue comentar en donde usas el reader, ya que cómo no vas a capturar datos no es necesario usarlo...

Espero te sirva

Saludos.
Gracias;

Así si funciona perfectamente
__________________
Gracias por todo;

Un saludo

Etiquetas: primero, sql, time
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 17:04.