... Ya hay un DataReader abierto?

28/04/2006 - 03:47 por MalKaViAN_NeT | Informe spam
bueno primero ACLARAR que no hay ningún datareader que no cierre despues de
usarlo, en éste caso revisé el code varias veces para ver si se me había
olvidado alguno sin cerrar y no lo encontré, pero si tengo un
sqldataadapter que tengo abierto ligado a una consulta que hice a la misma
tabla que quiero abrirle otro datareader y es alli donde me sale el error.
miren el code:

[
Dim comando1 As New SqlClient.SqlCommand("select name,xtype,length
from syscolumns where id = " & intIdTabla, Me.Coneccion)
Dim MiAdaptador As New SqlClient.SqlDataAdapter(comando1)
Me.tmpTablaDatos = New Data.DataTable
MiAdaptador.Fill(Me.tmpTablaDatos)
]
ahora quiero abrir un nuevo datareader para hacerle una consulta a la misma
tabla y me sale el mismo error que cuando dejas abierto un datareader y lo
vuelves a abrir sin cerrarlo.
Supuse entonces que en el dataadapter queda abierto como el datareader(no
tengo mucho tiempo de migrar a .net) y traté llamando a su evento Disposed
pero sigue igual, si alguien puede guiarme se lo agradecería

Saludos
MaLkAvIAN_NeT

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
28/04/2006 - 08:25 | Informe spam
"MalKaViAN_NeT" wrote in message
news:
[
Dim comando1 As New SqlClient.SqlCommand("select name,xtype,length
from syscolumns where id = " & intIdTabla, Me.Coneccion)
Dim MiAdaptador As New SqlClient.SqlDataAdapter(comando1)
Me.tmpTablaDatos = New Data.DataTable
MiAdaptador.Fill(Me.tmpTablaDatos)
]
ahora quiero abrir un nuevo datareader para hacerle una consulta a la
misma
tabla y me sale el mismo error que cuando dejas abierto un datareader y lo
vuelves a abrir sin cerrarlo.
Supuse entonces que en el dataadapter queda abierto como el datareader(no
tengo mucho tiempo de migrar a .net) [...]



A ver si lo que pasa es que se ta ha olvidado abrir la conexión antes de
llamar al datareader. El dataadapter no tiene problema, porque si la
conexión se la encuentra cerrada, la abre, la usa, y la vuelve a cerrar.
Pero si después llamas a un datareader, tienes que hacer tú el Open, usar el
datareader, y luego hacer un Close de la conexión.
Respuesta Responder a este mensaje
#2 MalKaViAN_NeT
28/04/2006 - 21:41 | Informe spam
Gracias por tu respuesta 'Alberto Poblacion', el problema no fue porque haya
olvidado de cerrar un datareader o porque no le haya mandado la conección ;
lo que paso fue lo siguiente:
[
'esto en una funcion con el datereader regTipoDato
While regTipoDato.Read
Return = (regTipoDato.GetValue(0))
End While
regTipoDato.Close()
]
el error que me daba es porque al ejecutarse el return ya no seguía las
siguientes lineas de code; si no salía de la función por tanto que no cerraba
el datareader.

"Alberto Poblacion" wrote:

A ver si lo que pasa es que se ta ha olvidado abrir la conexión antes de
llamar al datareader. El dataadapter no tiene problema, porque si la
conexión se la encuentra cerrada, la abre, la usa, y la vuelve a cerrar.
Pero si después llamas a un datareader, tienes que hacer tú el Open, usar el
datareader, y luego hacer un Close de la conexión.




Respuesta Responder a este mensaje
#3 Alberto Poblacion
28/04/2006 - 23:02 | Informe spam
"MalKaViAN_NeT" wrote in message
news:
lo que paso fue lo siguiente:
[
'esto en una funcion con el datereader regTipoDato
While regTipoDato.Read
Return = (regTipoDato.GetValue(0))
End While
regTipoDato.Close()
]
el error que me daba es porque al ejecutarse el return ya no seguía las
siguientes lineas de code; si no salía de la función por tanto que no
cerraba
el datareader.



Es frecuente cometer errores de este tipo. Un remedio para que no te
ocurran estas cosas es acostumbrarse a programar usando un Try...Finally, y
siempre meter el Close en el Finally. Asi, aunque se te cuele un Return en
el Try, o se produzca un error imprevisto y la excepción suba al bloque
llamante, nunca se te queda sin ejecutar el Close. Otra alternativa, si usas
la versión 2005 del VB, es emplear un bloque "Using", que también garantiza
la realización del Close.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida