Usando SQLDataReader

Entornos Conectados 

Fecha: 07/Jun/2005 (07 de Junio de 2005)
Autor: Ing. Fernando Luque Sánchez
DCE 4 Estrellas

fls2307@hotmail.com
fernandoluque2307@yahoo.com
fluque@infonegocio.net.pe

 


Sres Desarrolladores, en esta ocasión va mi aporte para entender un poco el uso del objeto SQLDataReader usado en Entornos conectados usando Base de Datos.

UN POCO DE TEORIA

SQLDataReader es una clase que permite leer un conjunto de registros avanzando unicamente hacia adelante, es una clase que no se puede heredar.

Para crear un SQLDataReader se utiliza el método ExecuteReader del SQLCommand, lo mas importante de anotar es que este objeto mantienen la conexión SQLConnection ocupada y abierta mientras realiza la lectura.

Algunos métodos públicos podemos encontrarlos en la siguiente tabla:

Método Público Descripción
Close Cierra el objeto SQLDataReader
Read Desplaza en SQLDataReader al siguiente registro
NextResult Desplaza el lector de datos al siguiente resultado, esto es cuando en el Procedimiento almacenado utilizado se incluye mas de una instrucción Transact-SQL

GetBoolean

GetByte

GetChar

GetDouble

Obtiene el valor de la columna teniendo en cuenta el tipo de dato.

La Lista completa de métodos la puede visualizar en la ayuda interactiva de Visual Studio .Net

El ejemplo que comparto con todos utiliza el sigueinte Procedimiento Almacenado (Store Procedure - SP) en la base de datos Northwind:

Create PROCEDURE dbo.GetAllProductsList

AS

SELECT * FROM PRODUCTS WHERE DISCONTINUED<>0
SELECT * FROM PRODUCTS WHERE CATEGORYID IN (1,3,5)
SELECT * FROM PRODUCTS WHERE UNITPRICE > 20

RETURN

Note que el Procedimiento Almacenadoes simple y tiene TRES instrucciones Transac-SQL.

A continuación sigue código en Visual Basic

Private Sub ObtenerDatos(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

        'Crear el Comando SQL
        Dim cmd As New SqlCommand("getAllProductsList", cn)

        'Especificar el tipo de comando
        cmd.CommandType = CommandType.StoredProcedure

        'Crear el DataReader
        Dim drConsulta As SqlDataReader

        'Abrir la conexión
        cn.Open()

        'Ejecutar el DataReader
        drConsulta = cmd.ExecuteReader()

        'LLENAR LAS LISTAS CON LOS RESULTADOS - Borrarlas primero
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()

        'ARTICULOS NO DESCONTINUADOS
        While drConsulta.Read
            ListBox1.Items.Add(drConsulta(1))
            'el número 1 indica la segunda 
            'columna de la consulta
        End While

       'SIGUIENTE RESULTADO
       'PRODUCTOS DE CATEGORIAS 1, 3 Y 5
        drConsulta.NextResult()

        While drConsulta.Read
            ListBox2.Items.Add(drConsulta(1))
        End While

        'SIGUIENTE RESULTADO
        'PRODUCTOS CON PRECIO UNITARIO > 20

        drConsulta.NextResult()
        While drConsulta.Read
            ListBox3.Items.Add(drConsulta(1))
        End While

        'Cerrar el DataReader

        drConsulta.Close()
        'Cerrar la conexión
        cn.Close()
End Sub

El código completo está en el archivo adjunto. Suerte a todos, espero les sirva de ayuda, no olviden dar su opinión en mi Panoramabox, gracias.

Ing. Fernando Luque Sánchez
Trujillo - Perú


Espacios de nombres usados en el código de este artículo:

System.Data
System.Data.SQLClient


Fichero con el código de ejemplo: FernandoLuque_Usando_SQLDataReader.zip - Tamaño 19 KB


ir al índice