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

Paso a SqlDataReader

Estas en el tema de Paso a SqlDataReader en el foro de .NET en Foros del Web. Hola chicos, seguro que es una tontería pero mi desconocimiento del medio no se por que pero me falla.Os cuento. Tengo dos ficheros, unas aspx ...
  #1 (permalink)  
Antiguo 31/03/2013, 13:03
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
Paso a SqlDataReader

Hola chicos, seguro que es una tontería pero mi desconocimiento del medio no se por que pero me falla.Os cuento. Tengo dos ficheros, unas aspx y un vb y me pasa lo siguiente. Tengo en el vb este código

Public Function ObtenerListado() As SqlDataReader
Dim Cmd = New SqlCommand()
Dim Cn As New SqlConnection
Cn = CrearConexion()


Dim Procedimiento As String
Procedimiento = "OBTENER_LISTADO"
Try
Cn.Open()
With Cmd
.Connection = Cn
.CommandText = Procedimiento
.CommandType = CommandType.StoredProcedure

ObtenerListado = .ExecuteReader()
End With
Finally
Cn.Close()
End Try
End Function
End Class

Y en el aspx tengo esto

Dim objCom As New Nones.Viaje
Dim cmdAspx As SqlDataReader
cmdAspx = objCom.ObtenerListadoViajes()
If cmdAspx.HasRows Then

Dim Prox As Boolean = True
Do Until Not Prox
Console.WriteLine("<tr>")
Console.WriteLine("<td style='border-bottom:#000000 1px solid;border-left:#000000 1px solid;border-right:#000000 1px solid;'>&nbsp;<a href='evento.asp?id=1&Toolbar=Default' class='letraPeque'>1</a></td>")
Console.WriteLine("")
Console.WriteLine("")
Console.WriteLine("")
Console.WriteLine("</tr>")
Prox = cmdAspx.NextResult()
Loop
cmdAspx.Close()
End If

El caso es que cuando ejecuto es aspx me da este error

Intento no válido de llamar a HasRows cuando el lector está cerrado.

Y me da el error en la línea " If cmdAspx.HasRows Then"

¿Sabéis a que es debido?

Gracias
  #2 (permalink)  
Antiguo 10/04/2013, 08:16
lpz
 
Fecha de Ingreso: abril-2006
Ubicación: Argentina
Mensajes: 402
Antigüedad: 18 años
Puntos: 2
Respuesta: Paso a SqlDataReader

Es probable que ObtenerListadoViajes no este devolviendote el SqlDataReader. En la consulta sql que hagas dentro de ese metodo, si estas invocando al metodo executeReader, deberia devolverte un SqlDataReader.
  #3 (permalink)  
Antiguo 11/04/2013, 05:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Paso a SqlDataReader

El problema no es ese. El principal problema es que para acceder y consultar un objeto SqlDataReader la conexión no se tiene que haber cerrado y si te fijas en la función de obtenerListado tienes esto en el Finally

Código vb:
Ver original
  1. Cn.Close()

Si quieres trabajar con los datos de forma "offline" (con la conexión cerrada) lo mejor es usar un DataSet.
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 15/04/2013, 10:54
lpz
 
Fecha de Ingreso: abril-2006
Ubicación: Argentina
Mensajes: 402
Antigüedad: 18 años
Puntos: 2
Respuesta: Paso a SqlDataReader

Es cierto eso lo de la conexion cerrada, pero de alguna forma mi respuesta tiene validez ya que la funcion no esta devolviendo el objeto como corresponde :P

Etiquetas: Ninguno
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 12:54.