domingo, 25 de abril de 2010

[ADO.NET] Conexión con una base de datos

El pasado jueves 22 de Abril impartí el taller de ADO.NET en la Universidad de Alicante. Como últimamente dispongo de poco tiempo para sobrevivir -y menos para escribir artículos- comenzaré con esta temática, inaugurando la serie/tag de ADO en este blog. Uno de los puntos críticos de cualquier aplicación es el tratamiento de su persistencia de datos. En otra ocasión trataré el tema de la arquitectura, que es bastante interesante. Ahora simplemente lo voy a dedicar a ver cómo se puede acceder a los datos que previamente se han almacenado en una base de datos. ADO.NET proporciona una serie de clases llamadas proveedores que permiten realizar el tratamiento de datos con una BD. En este caso vamos a suponer que el motor de la base de datos es SQL Server 2005, aunque obviamente es perfectamente posible conectarse a otras bases de datos a través de sus respectivos proveedores de datos. Para conectarnos a nuestro motor de base de datos, debemos usar un string que actuará de cadena de conexión y una clase llamada SQLConnection que será la encargada gestionar la totalidad de la conexión. Por ejemplo, un string como cadena de conexión podría ser el siguiente:
string connectionString = "Data Source=localhost;Initial Catalog=TallerADO; integrated security=true";
En este caso tenemos varias propiedades. En primer lugar indicamos que el servicio del motor de la base de datos está situado en la dirección localhost y que vamos a emplear la base de datos cuyo nombre es TallerADO. Por último indicamos que tiene seguridad integrada, lo cual significa que usaremos la autenticación propia de Windows para acceder a dicho servicio. A continuación debemos instanciar la clase SQLConnection del siguiente modo:
SQLConnection conexion = new SqlConnection(connectionString);
Por último, abrirmos la conexión con:
conexion.Open()
y la cerramos con
conexion.Close()
Sin embargo, el usar un string como cadena de conexión puede resular bastante tedioso para el programador, en especial aquellas ocasiones en que la cadena es bastante larga y/o posee un gran número de atributos. Para ello existe una clase que ayuda a generar esta cadena, una clase llamada SqlConnectionStringBuilder. Esta clase proporciona propiedades de acceso para cada uno de los atributos que puede tener una cadena de conexión desde todos los que vimos anteriormente hasta otros como la caducidad de la conexión, timeout, usuario, contraseña, etc. Veamo cómo se hace:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

builder.DataSource = "localhost";
builder.InitialCatalog = "TallerADO";
builder.IntegratedSecurity = false;
builder.UserID = "yuju";
builder.Password = "yuju";
conexion = new SqlConnection(builder.ConnectionString);
En este caso hemos añadido dos nuevas propiedades: userID y Password, que serán las credenciales que usaremos para conectarnos al motor de la base de datos. Como queremos usar esas credenciales, marcamos IntegritatedSecurity como false para evitar que al hacer la conexión se emplee la cuenta de Windows con tales fines. Por último, a través de la propiedad ConnectionString el builder nos proporciona la cadena generada. Mejor así, ¿no? Por último, se entiende que todo el código aquí mencionado debe ir dentro de try/catch para emplearse en el gestor de excepciones que tengamos en nuestra aplicación.