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

error: There is already an open DataReader

Estas en el tema de error: There is already an open DataReader en el foro de .NET en Foros del Web. alguien sabe por que marca este error: There is already an open DataReader associated with this Command which must be closed first. este es mi ...
  #1 (permalink)  
Antiguo 24/08/2012, 12:06
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
error: There is already an open DataReader

alguien sabe por que marca este error:

There is already an open DataReader associated with this Command which must be closed first.


este es mi codigo

Dim sqlCon As SqlConnection = New SqlConnection("Data Source=192.168.10.20;Initial Catalog=Papeleria;User ID=sa;Password=stm01;MultipleActiveResultSets=True ;")
sqlCon.Open()
Dim sqlCmd As SqlCommand = New SqlCommand
sqlCmd.CommandText = "select precio from articulos where descripcion = '" & Label6.Text.Trim() & "'"
sqlCmd.Connection = sqlCon
Label65.Text = sqlCmd.ExecuteScalar.ToString

sqlCon.Close()
'-----------------------
Dim sqlCon1 As SqlConnection = New SqlConnection("Data Source=192.168.10.20;Initial Catalog=Papeleria;User ID=sa;Password=stm01;MultipleActiveResultSets=True ;")
sqlCon1.Open()
Dim sqlCmd1 As SqlCommand = New SqlCommand
sqlCmd1.CommandText = "select precio from articulos where descripcion = '" & Label7.Text.Trim() & "'"
sqlCmd1.Connection = sqlCon1
Dim leerbd As SqlDataReader = sqlCmd1.ExecuteReader()
If leerbd.Read <> False Then
Label66.Text = sqlCmd1.ExecuteScalar.ToString
Else
Label66.Text = ""

End If

sqlCon1.Close()
  #2 (permalink)  
Antiguo 24/08/2012, 12:41
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: error: There is already an open DataReader

El error esta claro, menciona que si tu ya estas usando un DataReader ya no puedes utilizar ExecuteScalar
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 24/08/2012, 12:56
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: error: There is already an open DataReader

Entonces no se puede hacer eso que quiero..alguna recomendacion.de como hacerlo..?..gracias
  #4 (permalink)  
Antiguo 24/08/2012, 13:01
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: error: There is already an open DataReader

Pero tu estas haciendo mal el codigo revisa bien si ya has leido el SqlDataReader solo te basta con recorrerlo para que tomes sus valores trata de usar

leerbd.GetString(0) // donde get recupera el valor por cada fila recorrida y el 0 es el indice de la columna a buscar
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 24/08/2012, 13:32
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: error: There is already an open DataReader

algun otro metodo para meter una consulta en un label..?
  #6 (permalink)  
Antiguo 24/08/2012, 14:54
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 1 mes
Puntos: 61
Respuesta: error: There is already an open DataReader

Estas haciendo mal tu consulta imagino que quieres mostrar el dato que obtentes de la consulta en un label.
Código vb.net:
Ver original
  1. Using conn As New SqlConnection(Data Source=192.168.10.20;Initial Catalog=Papeleria;User ID=sa;Password=stm01;MultipleActiveResultSets=True ;)
  2.  
  3.      conn.Open()
  4.      Dim query As String = "select precio from articulos where descripcion=@desc"
  5.      Dim cmd As New SqlCommand(sql, conn)
  6.      cmd.Parameters.AddWithValue("@desc", Label6.Text)
  7.  
  8.  
  9.      Dim reader As SqlDataReader = cmd.ExecuteReader()
  10.  
  11.      If reader.Read() Then
  12.           Label65.Text = Convert.ToString(reader("NombrCampo"))
  13.      End If
  14.  
  15.  
  16. End Using
Esa seria la mejor forma de hacerlo siempre en tus consultas usa parámetros.

Saludos.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #7 (permalink)  
Antiguo 24/08/2012, 16:02
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: error: There is already an open DataReader

Funciona a la perfeccion....gracias por sus respuestas..

Etiquetas: open, sql
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 14:09.