Bien, llegamos a la tercera y última entrega sobre el manejo de conexiones en .net con C#, hemos hablado en el pasado acerca de cómo crear una cadena de conexión en la parte 1 y acerca de una manera mas eficiente para mejorar nuestro código en la parte 2.
En esta parte, hablaremos acerca de colocar nuestra cadena de conexión en un archivo de configuración, y cómo poder hacer uso de la misma en nuestro código.
Vamos a retomar el mismo proyecto que hemos venido manejando, y lo primero que haremos será agregar un nuevo archivo de configuración:
Lo dejaremos con el nombre por defecto. Ahora, el archivo creado nos mostrará lo siguiente:
¿Para qué servirá esto? Bueno, pues imagina que tienes 10 llamadas a tu base de datos con el código que hemos venido trabajando, si recuerdas, definimos en el código nuestra cadena de conexión; ¿Qué pasaría si de repente debemos cambiar el servidor de la conexión? pues un lío, habría que sustituir de una u otra forma cada una de las connection strings. Para evitarnos esto, creamos el archivo de configuración de nuestra aplicación, donde podremos agregar desde cadenas de conexión, hasta por ejemplo, colores de algún elemento visual. El formato de nuestro App.config está en xml, por lo que deberemos empezar a especificar etiquetas.
Nuestra primera etiqueta que agregaremos quedará:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <connectionStrings>
4: </connectionStrings>
5: </configuration>
Si te das cuenta, cuando empiezas a escribir dentro del app.config, el intellisense de visual studio te indica de hecho, que <connectionStrings> está disponible para autocompletar.
Excelente, ahora, dentro de connectionStrings, podemos definir la cantidad de cadenas de conexión que nosotros queramos, pero solo definiremos una en nuestro ejemplo, agregamos pues, una nueva cadena de conexión de la siguiente manera:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <connectionStrings>
4: <add name="miCadenaConexion"
5: connectionString="Data Source=.\SQLEXPRESS;
6: Initial Catalog=BalloonShop;
7: User=balloonshop;
8: password=contraseña"/>
9: </connectionStrings>
10: </configuration>
donde:
name = Nombre de tu cadena de conexión, puede ser cualquier nombre que desees;
connectionString = Hemos rescatado la cadena de conexión, que hemos utilizado en los posts anteriores, y la hemos colocado aquí.
Y listo, ya está listo nuestro archivo app.config, nos aseguramos de salvarlo, y ahora, cómo usarlo desde nuestro código?
Lo primero que debemos hacer, es agregar una nueva referencia, al ensamblado System.Configuration
Con un using, especificamos que queremos usar System.Configuration:
1: using System.Configuration;
Ahora, cuando vayamos a definir nuestra cadena de conexión, debemos poner algo como esto:
1: string miCadenaConexion =
2: ConfigurationManager.
3: ConnectionStrings["miCadenaConexion"].
4: ConnectionString;
Lo que hacemos, es llamar al administrador de configuraciones, quien obtiene la parte de connectionStrings de nuestro archivo app.config, ahí le especificamos el nombre de la cadena de conexión que queremos usar, y al final, le decimos que es la parte de connectionString la que nos interesa.
Si probamos nuestro código de ayer con esta modificación:
1: using System;
2: using System.Data.SqlClient;
3: using System.Configuration;
4:
5: namespace Cadenas_conexion_1
6: {
7: class Program
8: {
9: static void Main(string[] args)
10: {
11: string miCadenaConexion =
12: ConfigurationManager.
13: ConnectionStrings["miCadenaConexion"].
14: ConnectionString;
15:
16: SqlConnection sqlconnection;
17:
18: using (sqlconnection =
19: new SqlConnection(miCadenaConexion))
20: {
21: sqlconnection.Open();
22: if (sqlconnection.State ==
23: System.Data.ConnectionState.Open)
24: {
25: Console.WriteLine
26: ("Conexión abierta");
27: Console.Read();
28: }
29: }
30:
31: if (sqlconnection.State
32: == System.Data.ConnectionState.Open)
33: {
34: Console.WriteLine
35: ("La conexión sigue abierta!");
36: Console.Read();
37:
38: }
39: else
40: {
41: Console.WriteLine
42: ("La conexión se ha cerrado satisfactoriamente! :)");
43: Console.Read();
44: }
45: }
46: }
47: }
Obtendremos el mismo resultado:
Jeje, hemos pues, descrito en estas 3 partes, las mejores prácticas para manejar de una forma eficiente nuestras cadenas y conexiones a una base de datos, mas adelante, haremos uso de esto ampliamente 🙂
Salu2
Héctor Uriel Pérez Rojas