¿Cómo obtener los datos de una conexión de base de datos guardada en app.config o web.config? c# csharp #visualstudio

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>

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 :().

About

Desarrollador de software, lector compulsivo.

View all posts by