Cuando colocamos un objeto de conexión a un origen de datos sobre un formulario Windows Forms de Visual Studio .NET, éste aparece en la parte inferior del diseñador correspondiente y podemos editar sus propiedades desde la ventana de propiedades del entorno.

La propiedad más importante de este objeto es, sin duda, ConnectionString. Normalmente la ajustamos desde la propia ventana de propiedades, y mucha gente la deja simplemente ahí, sin añadir forma alguna de modificarla de forma externa a la aplicación. Esto tiene varios problemas, pero los principales son:

· Si queremos actualizar la cadena deberemos cambiar la propiedad desde el diseñador y recompilar la aplicación
· Si alguien rastrea o descompila el código puede leer en claro la cadena (con contraseñas de acceso y otra información confidencial).

Para evitar el primero de estos problemas es obvio que lo más sencillo es llevar esta cadena de conexion (entera o por partes) a algún archivo externo de configuración que leeremos desde nuestro código para ajustar la cadena en tiempo de ejecución.

Un truco interesante para obtener esta característica sin esfuerzo es el siguiente.

En la ventana de propiedades del objeto Connection, aparte de la propiedad ConnectionString clásica, existe una propiedad dinámica con el mismo nombre (dentro de la sección DynamicProperties). Si editamos su valor aparece un diálogo que nos pregunta si queremos obtener la cadena de ocnexión desde un archivo externo. Si marcamos esa opción el componente genera automáticamente el codigo necesario en nuestro formulario para que en tiempo de ejecución ese valor se obtenga desde un archivo de configuración externo.

El código automático se incluye dentro del método InitializeComponent del formulario, y tiene el siguiente aspecto (he incluido sólo el que se refiere a esta característica):

System.Configuration.AppSettingsReader configurationAppSettings = new System.Configuration.AppSettingsReader();
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.label1 = new System.Windows.Forms.Label();
this.sqlConnection1.ConnectionString = ((string)(configurationAppSettings.GetValue("sqlConnection1.ConnectionString", typeof(string))));

Como vemos se utiliza la clase AppSettingsReader, obteniéndose los datos de la conexión desde el archivo .config de la aplicación. Este archivo XML se generará de manera automática al compilar el programa e incluirá un nodo con el nombre especificado (en el ejemplo, sqlConnection1.ConnectionString) que podemos modificar para cambiar la cadena de conexión sin tener que recompilar. Como se puede comprobar es algo muy cómodo.

Ahora el problema que tenemos es cómo proteger el contenido de esa cadena de conexión, por defecto guardada en claro, para que no la pueda leer cualquiera que simplemente abra el archivo .config. Esto, sin embargo es un tema peliagudo que dejaré para una próxima ocasión.

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA