Introducción a la class SqlHelper

Posted on 8 of septiembre, 2015 by admin in C# & VB.net

En este artículo veremos una breve introducción sobre la clase SlqHelper de la Enterprise Library de Microsoft. Esta clase nos permite trabajar con la base de datos, esta clases pose un grupo de métodos que nos facilitan la vida. A la hora de desarrollar un software ya no necesitamos crear todo el bloque de código repetitivo que siempre creamos para el uso de query o storeprocedure.
Los principales métodos que pose esta clase son los siguientes:
1. ExecuteNonQuery
2. ExecuteDataset
3. ExecuteReader
4. ExecuteScalar
ExecuteNonQuery este método nos sirve para ejecutar query o storeprocedure y al final de la ejecución nos devolverá el número de filas afectadas. ExecuteDataset este método nos sirve para ejecutar query o storeprocedure y al final de la ejecución nos devolverá un Dataset. ExecuteReader este método nos sirve para ejecutar query o storeprocedure y al final de la ejecución nos devolverá un Reader. ExecuteScalar este método nos sirve para ejecutar query o storeprocedure y al final de la ejecución nos devolverá un object.
Ahora veremos un ejemplo sencillo de cómo utilizar la clase:

Para desarrollar el ejemplo necesitaremos descargar la clase SqlHelper y adicionarla a nuestro proyecto. El proyecto es un proyecto de window con un grid.
Primero adicionamos los siguientes using que utilizaremos:

using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

Luego crearemos la siguiente gui:

sqlhelper01

Ahora agregamos un método para llenar el grid.


void FillGridWithDatase()
{
try
{
StringBuilder sql = new StringBuilder();
sql.AppendLine(“SELECT [Status_Id] ,[Status_Desc] ,[Create_Date] FROM [Entity].[EN_CONTACT_STATUS]; “);

DataSet ds;
ds = SqlHelper.ExecuteDataset(ConnectionStrings.ConnectionString, CommandType.Text, sql.ToString());
datagvResult.DataSource = ds.Tables[0];

}
catch (Exception ex)
{
throw new Exception(ex.Message);
}

}

 

Ahora lo colocamos en el load del formulario y ejecutamos.

El método ExecuteDataset como todos los métodos públicos de la clase sqlhelper son estáticos no necesita crear instancia para poder llamarlos, este método requiere como parámetros la cadena de conexión, el query o storeprocedure y parámetros que son de tipo opcional.

 

private void Ejemplo01_Load(object sender, EventArgs e)
{
FillGridWithDatase();
//FillGridWithDataReader();
}

Ahora tendremos algo como esto:

sqlhelper02

Para bindiar objetos solo tenemos que colocar en la propiedad datasource la fuente de datos ya sea un dataset, datatable o una lista.

Ahora veamos el mismo ejemplo pero con el método ExecuteDatareader:

void FillGridWithDataReader()
{
try
{
StringBuilder sql = new StringBuilder();
sql.AppendLine(“SELECT [Status_Id] ,[Status_Desc] ,[Create_Date] FROM [Entity].[EN_CONTACT_STATUS]; “);
SqlDataReader dr = null;
dr = SqlHelper.ExecuteReader(ConnectionStrings.ConnectionString, CommandType.Text, sql.ToString());
DataTable dt = new DataTable();
dt.Load(dr);
datagvResult.DataSource = dt;

}
catch (Exception ex)
{
throw new Exception(ex.Message);
}

}

Hacemos el mismo proceso que el método anterior lo llamamos en el load del formulario:


private void Ejemplo01_Load(object sender, EventArgs e)
{
//FillGridWithDatase();
FillGridWithDataReader();
}

Por ultimo crearemos un método con un filtro para utilizar con el botón:

//
void SearchGridWithParameter(int Status_Id = 0)
{

try
{
StringBuilder sql = new StringBuilder();
sql.AppendLine(“SELECT [Status_Id] ,[Status_Desc] ,[Create_Date] FROM [Entity].[EN_CONTACT_STATUS] WHERE ([Status_Id] = @Status_Id OR 0 = @Status_Id);”);
SqlParameter param = new SqlParameter(“@Status_Id”, Status_Id);
SqlDataReader dr = null;
dr = SqlHelper.ExecuteReader(ConnectionStrings.ConnectionString, CommandType.Text, sql.ToString(), param);
DataTable dt = new DataTable();
dt.Load(dr);
datagvResult.DataSource = dt;

}
catch (Exception ex)
{
throw new Exception(ex.Message);
}

}

Este método lo llamaremos desde el click del botón:

private void btnSearch_Click(object sender, EventArgs e)
{
if (txtBuscar.Text.Length > 0)
{

SearchGridWithParameter(Convert.ToInt32(txtBuscar.Text));

}
else {
SearchGridWithParameter();
}
}

Y tendremos el siguiente resultado:
sqlhelper03

 

En conclusión la clase SqlHelper nos ayuda a no tener que reescribir el código para poder acceder a la base de datos.  Hoy en día contamos con los orm y quizás no tengamos que usar esta clase en nuestras aplicaciones pero todo tiene sus pro y contras el desarrollo con esta clase es más estándar y más fácil para dar mantenimiento que si usáramos orm y también a la hora de realizar consulta serán más rápidas.

Download