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

Hacer funcion para devolver un DataReader

Estas en el tema de Hacer funcion para devolver un DataReader en el foro de .NET en Foros del Web. Hola amigos, Resulta que estoy queriendo hacer una funcion para poder regresar un DataReader, he utilizado el codigo siguiente pero al asignar la funcion a ...
  #1 (permalink)  
Antiguo 10/06/2010, 15:14
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 21 años, 11 meses
Puntos: 4
Pregunta Hacer funcion para devolver un DataReader

Hola amigos,

Resulta que estoy queriendo hacer una funcion para poder regresar un DataReader, he utilizado el codigo siguiente pero al asignar la funcion a un reader me dice que el reader esta cerrado o no esta presente.

Código:
        dim reader as sqlDatareader
        Using connection As New SqlConnection(conexion)
            Dim command As New SqlCommand(queryString, connection)
            connection.Open()
            Dim reader As SqlDataReader = command.ExecuteReader()
        End Using
        
      return reader
Si tiene por ahi alguna clasesita para hacer todo esto(regresar dataReader,DataSet) ó si me dicen que esta mal en la funcion se los agradeceré.

Saludos
__________________
No le digas a Jehová que tan grande es tu problema, dile a tu problema cuan grande es Jehová.
  #2 (permalink)  
Antiguo 10/06/2010, 16:14
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Hacer funcion para devolver un DataReader

Primero que nada quita la variable duplicada de reader.

Segundo debes abrir la conexion antes de ejecutar el query, asi:

Código ASP:
Ver original
  1. Connection.open
  2. Dim Command as new SqlCommand (queryString, connection)

Y por ultimo debes leer los valores del reader
Código ASP:
Ver original
  1. While reader.Read()
  2.             variable= dR("campo")
  3.         End While

Si eso no te funciona algo así debería hacerlo
Código ASP:
Ver original
  1. conexion.Open()
  2.         Dim cM As New SqlCommand(accion, conexion)
  3.         Dim dR As SqlDataReader = cM.ExecuteReader()
  4.         While dR.Read()
  5.             var= dR("campor")
  6.  
  7.         End While
  8.         dR.Close()
  #3 (permalink)  
Antiguo 10/06/2010, 16:29
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 21 años, 11 meses
Puntos: 4
Sonrisa Respuesta: Hacer funcion para devolver un DataReader

Te agradezco jaullo la respuesta, pero yo lo que ando buscando es crear un método o función que me devuelva un DataReader, lo que tu me muestras ya hace rato que lo hago, pero ahora tengo la necesidad de crear un método que devuelva un DataReader.

Un ejemplo de uso seria el siguiente:

Código:
dim datos as new ConectaDB
dim lector as SqlDataReader

lector = datos.EjecutarReader("select....", conexion)

while lector.read
  
end while
La función debería de ser capaz de:
- Conectarse a la BD
- Obtener un reader
- Desconectarse de la BD
- Devolver el reader.


Espero puedan ayudarme .

Saludos.
__________________
No le digas a Jehová que tan grande es tu problema, dile a tu problema cuan grande es Jehová.
  #4 (permalink)  
Antiguo 10/06/2010, 16:36
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Hacer funcion para devolver un DataReader

Podría ser algo asi, que es practicamente lo que tienes arriba, pero como ves se abre la conexion antes de ejecutar el reader, que es lo que no estas ejecutando en tu funcion. Esta funcion que te pongo se desconecta de la bd una vez que termina la consulta.

Código ASP:
Ver original
  1. Public Shared Function GetDataReader(st as string) As OleDbDataReader
  2. Dim oConn As OleDbConnection
  3. '...
  4. '...
  5. oConn.open
  6. Dim oCmd As New OleDbCommand(st, oConn)
  7.  
  8. Dim dr As OleDbDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
  9.  
  10. Return dr
  11.  
  12. End Function

Última edición por jaullo; 10/06/2010 a las 16:45
  #5 (permalink)  
Antiguo 25/10/2011, 14:50
Avatar de DexterGlue  
Fecha de Ingreso: septiembre-2010
Ubicación: Managua
Mensajes: 60
Antigüedad: 13 años, 7 meses
Puntos: 0
Busqueda Respuesta: Hacer funcion para devolver un DataReader

Hola jaullo y locojars

Yo estoy tratando de hacer lo mismo, pero se me presenta el mismo error me dice al asignar el resultado de la funcion que el oledbdatareader se encuentra cerrado. ¿Como solucionaron esto?

La funcion que yo tengo es la siguiente

Código:
 Public Function GetData(ByVal connection As String, ByVal TipoComando As CommandType, ByVal tabla As String, _
                            Optional ByVal campos As String = "*", Optional ByVal condicion As String = "") As Object
Dim Reader As OleDbDataReader
Using conOleReader As New OleDbConnection(connection)
With cmdOleDReader
.CommandType = TipoComando
  Select Case TipoComando
 Case CommandType.TableDirect
   .CommandText = tabla
 Case CommandType.Text
   If Not condicion Is vbNullString Then
        .CommandText = "select " & campos & " from " & tabla & " where " & condicion
   Else
      .CommandText = "select " & campos & " from " & tabla
                        End If
 Case CommandType.StoredProcedure
 End Select
       .Connection = conOleReader
 End With
            Try
                conOleReader.Open()
            Catch ex As Exception
                MsgBox(ex.Message)
                conOleReader.Dispose()
            End Try

            Reader = cmdOleDReader.ExecuteReader()

            GetData = Reader
            Reader.Close()
        End Using
    End Function

y lo llama por medio de este codigo
Código:
 Dim drData As OleDbDataReader

 drData = GetData(My.Settings.mainCon, CommandType.TableDirect, "ixRevisionPacks")
Les agradezco la ayuda

Etiquetas: devolver, funcion
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 19:44.