lunes, 12 de noviembre de 2012

Como guardar un SqlDataSource en un DataSet en C#

Hoy he escrito un metodo en C# que permite usar un SqlDataSource para ser convertido en un DataSet.

A veces se da el caso que tenemos una fuente de datos en nuestra aplicacion, como un SqlDataSource y queremos de cierta forma manipular los datos que nos trae el data source pero no queremos duplicar codigo, es mejor utilizar y aplicar el principio DRY (Don’t Repeat Yourself) la traduccion es: No te repitas, para mas informacion: http://es.wikipedia.org/wiki/No_te_repitas

Lo que hace el metodo en esencia es pasarle la configuracion y los parametros del SqlDataSource a un SqlConnection.

Este es el metodo:

public DataSet SQLDataSource2DataSet(SqlDataSource SqlDS)
   
{

       
DataSet tabla = new DataSet();

       
SqlConnection conex = new SqlConnection();
       conex
.ConnectionString = SqlDS.ConnectionString;
       
SqlCommand comando = new SqlCommand();
       comando
.CommandText = SqlDS.SelectCommand;


       
//aqui le pasamos uno a uno los comandos

       
foreach (var param in SqlDS.SelectParameters.Cast<Parameter>())
       
{
try
           
{
               comando
.Parameters.Add(new SqlParameter(param.Name, param.DefaultValue));
           
}
           
catch (Exception ex)
           
{
           
// TODO
           
}
       
}

       comando
.Connection = conex;
       conex
.Open();
       
SqlDataAdapter parellenar = new SqlDataAdapter(comando);

       parellenar
.Fill(tabla); // llenamos el DataSet.
       conex
.Close();
       
return tabla;

   
}


Nota:
Para que este metodo funcione bien debemos asegurarnos de que los DefaultValue de los parametros del data source no sean null.