C#

Manejando cadenas de conexión en .Net con C#(3/3)


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:

image

image

Lo dejaremos con el nombre por defecto. Ahora, el archivo creado nos mostrará lo siguiente:

image

¿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á:


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:


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

image

Con un using, especificamos que queremos usar System.Configuration:


Ahora, cuando vayamos a definir nuestra cadena de conexión, debemos poner algo como esto:


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:


Obtendremos el mismo resultado:

image

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

Recetas
Xamarin.Forms – Personalizando un NavigationPage
  • Alyssa Fabienne

    jajaja
    que bien explicado, ok ya entendí la base de datos
    Gracias Hector
    todo esta supeer¡¡¡
    jaja Saludos


  • hectorperez

    Jajajajajaja Alyssita!! jajajaj gracias por el comentario, espero que te haya servido mucho para lo que estés haciendo en el museo 🙂 tkmmm un abrazote chamaquita, byeee 🙂


  • Shavo2

    Shavo2Shavo2

    Author Reply

    Hola estaba probando tu ejemplo pero no entiendo cuando pones [“miCadenaConexion”]
    a que te refieres con eso si el nombre de la conexion que establecimos en el archivo de configuracion o que??? necesito tu ayuda muchas gracias


    • hectorperez

      Así es, es el nombre con el que lo definimos en el App.config, de igual manera, si por alguna extraña razón no te funcionara, puedes probar, en vez de poner ConnectionStrings[“miCadenaConexion”], poner ConnectionStrings[0], el cual es el índice de nuestra primera cadena de conexión =)

      Salu2


  • Shavo2

    Shavo2Shavo2

    Author Reply

    Salu2 muchas gracias por tu pronta respuesta ya pude solucionar el problema ahoa tengo una pregunta hay alguna forma q el data source lo pueda modificar desde un formulario desde un textbox?


  • Adolfo

    AdolfoAdolfo

    Author Reply

    Esta muy bien, por cierto vi que haces la referencia a la cadena de conexión como si fuera una colección de objetos ConnectionString al app.config, entonces es posible poner mas cadenas para diferentes bases y proveedores (Oracle, MySql, etc) llamarlas conforme las uses, pero como las defines? solo le pones la etiqueta y ya?

    ejemplo:

    4:
    9:


    • hectorperez

      Bien, claro que es posible hacer eso que mencionas, de hecho, hay un tercer parámetro en el app.config para las cadenas de conexión, el cual es “Data Provider”, ahí especificas a que espacio de nombres pertenece, por ejemplo “System.Data.SqlClient”.

      Salu2


  • Alfredo Noel

    Me funciono de maravilla, tengo otra consulta, esta es mi cadena de conexion:”Data Source=miservidor;
    Initial Catalog=database; User=balloonshop; password=contraseña”. mi base de datos esta en un servidor(windows server 2003) lo cual accedo a ella de una PC cliente, la conexión es perfecta cuando compilo mi proyecto, el problema es cuando publico mi proyecto a mi servidor IIS que esta en mi PC cliente y hago la consulta por http://localhost/miproyecto/ me da el error que no se pudo concectar al servidor. por favor si alguien tiene una solución a mi problema.


    • hectorperez

      Checa que la autenticación se esté haciendo correctamente, podría ser problema de permisos.
      Salu2


  • James Ortíz

    Hola Héctor, Muchas gracias, en verdad que me ha servido de mucho!!! Y tu web me parece genial, es simple y limpia. Nuevamente gracias!


    • hectorperez

      Jeje, me da gusto que te haya servido, gracias por el cumplido, ya estaremos posteando más material, lo prometo =)


  • Felipe

    FelipeFelipe

    Author Reply

    Realizo mi conneccion con la siguiente cadena

    “server=SPSERVICES\DYNAMICS;uid=usser;pwd=contraseña;database = NSDynamics_MSCRM”;

    y la eh pasado a un XML como mensionabas arriba pero no me realiza la conexion me sale un error
    NullReferenceException
    y no logro realizar la conexion
    agradezco tu ayuda gracias


    • hectorperez

      Vale, en vez de usar ConnectionStrings[“miCadenaConexion”], intenta utilizar ConnectionStrings[0] y me comentas, salu2


  • zamir

    zamirzamir

    Author Reply

    Estoy haciendo una aplicacion web con conexiona a base de datos he probado algunas cadenas de conexion pero ninguna me funciona, ya que he chequeado en el codigo de web.config y no me configura la cadena de conexion con el nombre de la base de datos solo aparece ApplicationServices
    y no DatabaseConnectionString1 como deberia ser.

    Puedo configurar ese problema desde app.config?
    Agradezco tu ayuda gracias


    • hectorperez

      Puedes agregarlo tú manualmente, checa en mis entradas el app.config que pongo de ejemplo =), checa la parte 1 de esta serie, salu2! =)


  • David

    DavidDavid

    Author Reply

    Disculpa, pero puedo sacar el data Source desde un archivo texto? y asignarlo en el app.config


  • Juan Tepan

    Juan TepanJuan Tepan

    Author Reply

    Muy buen aporte, seguí todos tus pasos ya que necesitaba hacer una aplicación, cliente servidor, pero una duda como hago para que la aplicación siga trabajando a pesar de que el servidor se haya caído, hay como?…..Gracias


  • Leonte Larrauri

    Pocos como usted!…. exelente aporte a la sociedad informatica yo soy de Infraestructura y estoy experimentando un poco este mundo.

    Gracias Hector.