El acceso a datos con ADO.NET
Bases de ADO.NET
En .NET, el acceso a los datos se realiza mediante un bloque de servicios ADO.NET. Si bien el framework ASP.NET se ha enriquecido con nuevos controles que facilitan la lectura y la presentación de datos SQL, el desarrollo debería considerar el uso del modo conectado para elaborar una aplicación ASP.NET. En efecto, las restricciones de carga, de integración y de ejecución de la web influyen de manera importante en la eficiencia final de una aplicación ASP.NET.
1. El modo conectado
En el modo conectado, todos los formatos básicos de datos adoptan el mismo funcionamiento. Lo ilustraremos con SQL Server, y para pasar a otros formatos bastará con cambiar el espacio de nombres y modificar el prefijo de cada clase.
La siguiente tabla muestra los cambios necesarios:
Espacio de nombres |
Conexión |
Comando |
|
SQL Server |
System.Data.SqlClient |
SqlConnection |
SqlCommand |
Access |
System.Data.OleDB |
OleDBConnection |
OleDBCommand |
Oracle |
System.Data.Oracle-Client |
OracleConnection |
OracleCommand |
Las demás clases se nombran siguiendo el mismo principio.
a. La conexión
La conexión SqlConnection designa el canal por el que se intercambian las órdenes y los registros SQL. Este canal lo programan C# y la base de datos.
El objeto SqlConnection posee varios estados, cabe destacar dos de ellos: abierto y cerrado. Los demás estados están activos de forma transitoria o cuando ocurre algún error.
El programa interactúa con una conexión mediante la propiedad ConnectionString y los métodos Open() y Close(). Lo esencial de las operaciones ligadas a una base de datos solo puede realizarse a través de una conexión abierta.
// inicialización de la conexión
string c_string=@"data source=.\SQL2005; initial catalog=
agenda; integrated security=true";
SqlConnection cx_agenda;
cx_agenda=new SqlConnection();
cx_agenda.ConnectionString=c_string;
// apertura
cx_agenda.Open();
// operaciones SQL
// Cierre
cx_agenda.Close();
La cadena de conexión está formada por distintos segmentos que indican el nombre de la máquina que alberga la base de datos, el nombre de la base de datos, las credenciales del usuario... La sintaxis depende de cada formato de base de datos. En SQL Server, la cadena de conexión...
Acceso a los datos mediante proveedores
1. Introducción al desarrollo por proveedores
El acceso a los datos desde un sitio ASP.NET es, sin duda, uno de los aspectos más delicados de afrontar; para ayudar en la arquitectura de esta tarea, el framework .NET proporciona varios niveles de desarrollo:
Modo conectado |
Clases y componentes en contacto directo con la base de datos. |
Modo desconectado |
Componentes y herramientas que desacoplan la interfaz gráfica de la base de datos. |
Modo proveedor de datos |
Sistematización de una organización de acceso a datos. |
El desarrollo basado en un proveedor no consiste en enriquecer la API con nuevas clases. Se trata, más bien, de una estrategia, de una organización para obtener un buen resultado. En lo relativo al acceso a los datos, Microsoft define los proveedores como controles que agrupan una interfaz para el data binding, un almacén de datos (digamos un DataSet), un mecanismo de adaptación, una caché de datos así como una estrategia.
El framework ASP.NET define controles que implementan el acceso a datos según el modo proveedor. La sección Datos del cuadro de herramientas de Visual Studio proporciona, precisamente, este tipo de control. De forma complementaria, existen otros controles útiles para la presentación y la edición de datos.
a. Controles origen de datos en modo proveedor
Estos controles tienen en común el hecho de adoptar un estilo declarativo: se trata de controles Web Forms, sus propiedades vienen determinadas por el código XHTML. En la mayoría de ocasiones con muy poco código de usuario, a excepción de ObjectDataSource que es, precisamente, un control previsto para tener en cuenta las especificidades del programador.
SqlDataSource |
Control origen de datos especializado en el acceso a SQL Server. |
AccessDataSource |
Control origen de datos especializado en el acceso a MS-Access. |
ObjectDataSource |
El programador define su propia fábrica de objetos que se asocia, a continuación, a una instancia de Object-DataSource para las operaciones de data binding. |
XmlDataSource |
Control origen de datos especializado en la lectura filtrada de archivos XML. |
SiteMapDataSource |
Control origen de datos asociado al archivo de definición del mapa del sitio. |
LinqDataSource |
Control origen de datos asociado a un contexto de ob-jetos LINQ. |
EntityDataSource |
Control origen... |
Componentes gráficos de presentación de datos
1. El componente GridView
El componente GridView es el sucesor de DataGrid, disponible todavía por motivos de mantenimiento pero que se ha vuelto obsoleto. El GridView retoma las directrices de funcionamiento y la implantación de su predecesor. Es, también, mucho más práctico para las operaciones de actualización.
a. Presentación tabular de datos
Los orígenes de datos SQL están organizados en tablas y en registros. El GridView presenta cada registro en una fila, las columnas de la tabla serán las columnas de la tabla en pantalla.
Origen de datos
Las smart tags (accesos directos gráficos) resultan muy útiles para configurar un componente GridView y, en particular, su origen de datos (Configurar origen de datos). Si se trata de un control de origen (SqlDataSource, por ejemplo), no es necesario invocar al método DataBind(). Si se trata de un DataSet, el programador deberá realizar esta llamada como se describe en el caso de la versión 1.X.
Formato general
El formato general (colores, tamaño, apariencia) se define mediante la barra de propiedades. Como con el DataGrid que reemplaza, es posible aplicar formatos estándar mediante la smart tag Formato automático. No es posible personalizar la lista de formatos estándar que tiene por defecto Visual Studio.
Columnas
Por defecto, el GridView detecta los campos presentes a nivel de origen de datos y genera, para cada uno de ellos, una columna "HTML". El programador decide el orden de las columnas y aplica un formato a los valores correspondientes. Utiliza, para ello, la smart tag Editar columnas.
Como el DataGrid, GridView proporciona distintos tipos de columnas:
BoundField |
En el modelo por defecto, utiliza un Label y un TextBox para presentar y editar el valor. |
CheckboxField |
Utiliza una casilla de selección para editar el valor. Funciona bien con el tipo SQL bit (equivalente a bool). |
HyperLinkField |
El valor de la columna se utiliza para formatear un enlace hipertexto. |
ImageField |
El valor de la columna configura la visualización de una imagen. |
ButtonField |
El valor de la columna configura la representación de un botón. |
CommandField |
Acciones sobre el GridView: selección, edición, validación, anulación y borrado. |
A menudo, las columnas se asocian...