Visual Basic.NET - Error con Datareader

 
Vista:

Error con Datareader

Publicado por miraloyvete (39 intervenciones) el 25/07/2011 18:05:14
Hola

Tengo el siguiente codigo con el siguiente orden:

Dim conexion As New NpgsqlConnection()
Dim comando, comando1 As New NpgsqlCommand()
Dim lector, lector1 As NpgsqlDataReader

Try
conexion.ConnectionString = cad_con
conexion.Open()

comando.Connection = conexion
comando.CommandType = CommandType.Text
comando.CommandText = "select DISTINCT(palet) From m_palets"

lector = comando.ExecuteReader()

While lector.Read()

'Oculto el palet de 0 si no devuelve nada
If Convert.ToString(lector(0)) = "" Then
OcultarPalet((0))
'
Exit Sub
End If

p = CInt(lector(0))
pindex = pindex + 1


comando1.Connection = conexion
comando1.CommandType = CommandType.Text
comando1.CommandText = "SELECT matricula,bultos FROM m_relconp WHERE palet=" & CStr(p)

lector1 = comando1.ExecuteReader()

While lector1.Read()

'meto el item, primero la cantidad
Palet_ed(pindex).Item(0, i).Value = Convert.ToString(lector1(1))
'luego el nombre del articulos
Palet_ed(pindex).Item(0, i).Value = Convert.ToString(lector1(0))
'en el tag guardo la matricula
Palet_ed(pindex).Item(0, i).Tag = matri

End While

lector1.Close()

MostrarPagina() 'me voy a la pagina

End While

lector.Close()

Me da el siguiente error y no se como solucionarlo:
"There is already open datareader associated with this command which must be closed first"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error con Datareader

Publicado por Damian (824 intervenciones) el 29/07/2011 15:57:19
1)El problema lo tienes con el Exit sub que esta dentro de tu instrucción if, que sale del procedimiento sin que se cierre tu DataReader quedando este abierto, ahi también tendrías que poner un close de tu DataReader.
2)Y el mensaje te lo dice claramente que ya tienes un DataReader abierto y debes cerrarlo primero antes de usar el otro, esto indica que no puedes usar dos DataReader en simultaneo.
Yo verificaría esas dos opciones.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error con Datareader

Publicado por Harold Villena (411 intervenciones) el 01/08/2011 02:16:01
Con este codigo usas el datareader y al salir del using cierra automaticamente el reader.

Using reader As DbDataReader = Comando.ExecuteReader(CommandBehavior.Default Or
CommandBehavior.CloseConnection)
Do While reader.Read

Dim valor As String = reader.GetString(0)

'tu codigo...

Loop

End Using
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error con Datareader

Publicado por Fosi (1 intervención) el 26/11/2012 10:21:51
Aunque un poco tarde pero bueno por si alguien lo lee y tiene el mismo problema se soluciona añadiendo en la cadena de conexion lo siguiente:

;multipleactiveresultsets=true

Con esto se puede hacer varios reader juntos.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar