Para obtener los datos de conexión a una base de datos que tenemos guardados en nuestro archivo app.config o web.config (dependiendo el tipo de proyecto), haremos uso de la clase ConnectionStringSettingsCollection y ConfigurationManager.
En nuestro archivo de configuración (app.config o web.config), se encuentra una sección en la cual estan guardadas las cadenas de conexión, por ejemplo:
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="conexionPatito" connectionString="Data
Source=localhost;Initial Catalog=basededatosPatito;User
ID=pato;Password=patofeo" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Para acceder a esos datos y saber cual es el servidor o el nombre de la base de datos, a continuación escribo una clase comentada paso por paso:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Pato {
/// <summary>
/// Clase encargada de la capa de datos del modulo de configuracion de conexion
/// Héctor de León
/// 07/01/2013
/// </summary>
class Conexion {
//atributos
public string servidor = "";
public string usuario = "";
public string password = "";
public string baseDeDatos = "";
//nombre de la conexión a modificar
private string nombreConexion = "conexionPatito";
/// <summary>
/// obtiene los datos de la conexión para ser utilizados en el formulario
/// </summary>
/// <returns></returns>
public bool getData() {
bool exito = false;
// se obtienen las conexiones
System.Configuration.ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
//si existe por lo menos una conexión continuamos
if (connections.Count != 0) {
//Recorremos las conexiones existentes
foreach(ConnectionStringSettings connection in connections) {
//asignamos el nombre
string name = connection.Name;
//obtenemos el proveedor, solo por demostración, no lo utilizaremos ni nada.
string provider = connection.ProviderName;
//obtenemos la cadena
string connectionString = connection.ConnectionString;
//comparamos el nombre al de nuestro atributo de la clase para verificar si es la cadena
//de conexión que modificaremos
if (name.Equals(nombreConexion)) {
//separamos la conexión en un arreglo tomando ; como separador
string[] sC = connectionString.Split(';');
foreach(String s in sC) {
//separamos por el simbolo = para obtener el campo y el valor
string[] spliter = s.Split('=');
//comparamos los valores
switch (spliter[0].ToUpper()) {
case "DATA SOURCE":
servidor = spliter[1];
break;
case "USER ID":
usuario = spliter[1];
break;
case "PASSWORD":
password = spliter[1];
break;
case "INITIAL CATALOG":
baseDeDatos = spliter[1];
break;
}
}
}
}
} else {
Console.WriteLine("No existe la conexión");
}
return exito;
}
}
Ahora de esta manera la podemos utilizar:
//creamos nuestro objeto
Conexion oConexion = new Conexion();
//ejecutamos el metodo
oConexion.getData();
//imprimimos el resultado
Console.WriteLine("servidor " + oConexion.servidor + " base de datos: " + oConexion.baseDeDatos + " usuario: " + oConexion.usuario + " password: " + oConexion.password);
Nota: Recuerden agregar arriba: using System.Configuration;
Si tienen alguna duda en comentarios pueden preguntar.
Y como siempre el código es para explicar no es la manera formal de hacerlo (por los atributos públicos :().