Publicidad

ASP.NET, llenar un DataSet con múltiples Querys


Por Alex el 22/01/2006 , Comentar el artículo

Comparte este artículo:        




Un DataSet nos permite almacenar múltiples sentencias SELECT ejecutadas desde un Stored Procedure, cada una de ellas almacenadas en un DataTable. Con esta opción podemos minimizar las llamadas a la base de datos.


Vamos a ver este proceso con un ejemplo. Supongamos que en una página aspx tenemos que listar el contenido de cuatro trablas de SQL Server a través de cuatro storeds prodecures para llenar cuatro DataGrids. Este proceso son cuatro llamadas a la base de dados con sus correspondientes conexiones y objetos connection, command y DataSet. Para minimizar este tráfico de idas y venidas de datos y conexiones podemos ejecutar un sólo Stored Procedure y tener un sólo DataSet.

En el ejemplo utilizamos la base de datos PUBS que la podeis descargar desde Microsoft y vamos a listar los registros de las tablas:

  • Authors
  • mployee
  • Jobs
  • Publishers

Con lo que las selects quedarían de la siguiente forma:

   Select top 5 * From Authors
   Select top 5 * From employee
   Select top 5 * From Jobs
   Select top 5 * From publishers

(Ya sé que el asterisco es una “animalada” pero ésto es ssólo un ejemplo ;-) ) Y con ellas creamos un stored procedure que llamaremos ejm_multiples_querys.

Create Procedure ejm_multiples_querys

As
Select top 5 * From Authors
Select top 5 * From employee
Select top 5 * From Jobs
Select top 5 * From publishers

Desde nuestra página aspx, donde tenemos los cuatro DataGrids para rellenar realizaremos una sola conexión que nos devuelva las cuatro querys y rellenaremos los DataGrids de la siguiente forma: Realizamos la conexion a la base de datos y la abrimos

SqlConnection SqlConn = new SqlConnection("User ID=sa;Password=;Initial Catalog=PUBS;Data Source=localhost");
SqlConn.Open();

Creamos un command para ejecutar la stored procedure.

SqlCommand SqlCmd = new SqlCommand("ejm_multiples_querys", SqlConn);
SqlCmd.CommandType = CommandType.StoredProcedure;

Creamos un DataAdapter para recuperar los datos del stored procedure y rellenar el DataSet

SqlDataAdapter SqlDa = new SqlDataAdapter(SqlCmd);
DataSet DS = new DataSet();
SqlDa.Fill(DS);

En este punto es donde vamos a rellenar los DataGrids con los valores de cada SELECT almacenados en un tabla diferente dentro del mismo DataSet.

Llenamos el DataGrid 1 con los datos del SELECT a la tabla authors

GridView1.DataSource = DS.Tables[0];
GridView1.DataBind();

Llenamos el DataGrid 2 con los datos del SELECT a la tabla employee

GridView2.DataSource = DS.Tables[1];
GidView2.DataBind();

Llenamos el DataGrid 3 con los datos del SELECT a la tabla Jobs

GridView3.DataSource = DS.Tables[2];
GridView3.DataBind();

Llenamos el DataGrid 4 con los datos del SELECT a la tabla publishers

GridView4.DataSource = DS.Tables[3];
GridView4.DataBind();

Si ejecutamos esta página aspx quedara como muestra la

Imagen

y se ejecutamos la stored procedure en el Query Analyzer de SQL Server vereis que los resultados son los mismos, cuatro conjuntos de resultados

Imagen

Aquí se nos puede plantear la duda de en qué momento es óptimo utilizar este metodo o no dado que los resultados de las consultas guardan una imagen de la tabla en memoria, bueno, cada uno ha de ver el rendimiento de su web y ver si este método es mas óptimo que lanzar cuatro consultas o las que sean a la base de datos.

Saludos
Alex


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.