jueves, agosto 14, 2008

Función para ejecutar un procedimiento almacenado

Continuando un poco con SQL Server y el post anterior sobre procedimientos almacenados, ahora dejo una pequeña funcion que permite recibir como parametros una cadena de textos para el nombre del procedimiento y un objeto hashtable para los parametros.

La idea es que esta funcion se guarde como un metodo dentro una clase para el proyecto que estamos realizando.

Actualmente esta clase ya cuenta con metodos para obtener un datareader, un escalar, una consulta non-query, etc. Ahora la idea es que acepte procedimientos almacenados.

    Public Function ExecuteStoreProcedure(ByVal spname As String, ByVal params As Hashtable) As SqlDataReader
        If connString.State = ConnectionState.Closed Then
            connString.Open()
        End If
        Dim cmd As New SqlCommand(spname, connString)
        cmd.CommandType = CommandType.StoredProcedure
        For Each param As DictionaryEntry In params
            cmd.Parameters.AddWithValue(param.Key, param.Value)
        Next
 
        Return cmd.ExecuteReader
    End Function 'ExecuteDataSet


De esta manera creamos un objeto de la clase, mediante:


        Dim db As New AccessDatabase
        Dim oreader As SqlClient.SqlDataReader
        Dim hashParams As New Hashtable
        hashParams.Add("@page", 3)
        hashParams.Add("@pagesize", 50)
         oreader = db.ExecuteStoreProcedure("usp_getdestiniesbypage", hashParams)


Si lo deseamos podemos colocar un grid en nuestra pagina y vincular directamente el objeto datareader.

        GridView1.DataSource = oreader
        GridView1.DataBind()

Listo!

1 comentario:

Manuel dijo...

Muy bueno!!

Me sirvió mucho!!

Gracias!