En el siguiente ejemplo vamos a ver cómo podemos modificar el texto de la consulta SQL de un objeto de tipo TableAdapter
. Como motor de base de datos vamos a utilizar MySql.
Realizaremos la implementación de un método de ejemplo en el DataSet
que nos devuelva los datos sin ordenar pero crearemos una clase para que en tiempo de ejecución podamos obtener los datos de manera ordenada pasándole la parte del ORDER BY
en una variable de tipo String
.
En nuestro ejemplo tendremos una tabla llamada personas con los campos id, nombre, apellidos y email. Crearemos un DataSet
tipado como mostramos en la siguiente imagen:
Ahora hacemos doble clic sobre el TableAdapter
del DataSet
e implementamos el siguiente código:
public partial class personasTableAdapter
{
public void SetOrden(string orden)
{
this.CommandCollection[0].CommandText += orden;
}
}
}
Ahora implementamos la clase Ejemplo
que tendrá un método llamado GetDatosOrdenados
que nos devolverá dicha tabla ordenada dependiendo del parámetro pasado.
{
dsEjemploTableAdapters.personasTableAdapter adaptador;
/// <summary>
/// Constructor de la clase Ejemplo. Instanciaremos el adaptador de acceso a datos.
/// </summary>
public Ejemplo()
{
this.adaptador = new dsEjemploTableAdapters.personasTableAdapter();
}
/// <summary>
/// Método público que devolverá la tabla ‘personas’ ordenada dependiendo del parámetro órden
/// en tiempo de ejecución (programmatically)
/// </summary>
/// <param name=»orden»></param>
/// <returns></returns>
public dsEjemplo.personasDataTable GetDatosOrdenados(String orden)
{
adaptador.SetOrden(orden);
return adaptador.GetData();
}
}
Veamos cómo llamar al método que acabamos de implementar. En nuestro pequeño ejemplo rellenaremos un GridView
de ASP.NET con la información de la tabla personas ordenada por nombre.
grdEjemplo.DataSource = ejemplo.GetDatosOrdenados(«ORDER BY nombre»);
grdEjemplo.DataBind();
Este tipo de implementaciones puede resultar práctico por ejemplo a la hora de paginar datos en tiempo de ejecución, reordenar gran cantidad información mediante el motor de la base de datos que siempre será más óptimo que hacerlo mediante código.