¿Cómo obtener los datos de conexión guardados en app.config o web.config C# .Net Framework?

En este video te mostrare como puedes obtener los datos almacenados de las cadenas de conexión en tu archivo web.config o app.config en los proyectos hechos en .Net Framework.


 public class Connection
    {
        public string Server{ get; set; }
        public string User { get; set; }
        public string Password { get; set; }
        public string DB { get; set; }

        private string NameConnection;

        public Connection(string NameConnection= "pruebillaEntities")
        {
            this.NameConnection = NameConnection;
        }

        public void GetData()
        {
            ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;

            if (connections.Count > 0)
            {
                foreach (ConnectionStringSettings connection in connections)
                {
                    string name = connection.Name;
                    string provider = connection.ProviderName;
                    string connectionString = connection.ConnectionString;
                 
                    if (name.Equals(NameConnection))
                    {
                        connectionString = connectionString.Split('\"')[1];

                        string[] arrElementos = connectionString.Split(';');
                        foreach (var s in arrElementos)
                        {
                            string[] arrValue = s.Split('=');
                            switch (arrValue[0].ToUpper())
                            {
                                case "DATA SOURCE":
                                    Server = arrValue[1];
                                    break;
                                case "USER ID":
                                    User= arrValue[1];
                                    break;
                                case "PASSWORD":
                                    Password = arrValue[1];
                                    break;
                                case "INITIAL CATALOG":
                                    DB = arrValue[1];
                                    break;
                            }
                        }
                    }
                }
            }
            else
                throw new Exception("No existen cadenas de conexión");
        }

    }

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