Para esta configuración en especial se complica un poco ya que el scope de las cadenas de conexion es aplicación por lo que no pueden ser modificadas con un simple "set", por lo que primero puedes hacer lo siguiente.
Primero verificaremos que nos hizo visual con respecto a la configuración visual que hicimos por lo que abrimos el archivo app.config en este caso el mio tiene lo siguiente:
En este caso revisemos primero la etiqueta <clear /> es para que las conexiones heredadas no se agreguen a la configuración por ejemplo yo trabajo con mysql por lo si no pongo este parámetro tendré una configuración adicional a SQLExpress que no la necesito por lo que me deshago de ella en el ejecutable.
Segundo el parámetro que viene en la cadena de conexión de name regularmente esta formado por "nombreProyecto.properties.settings.name" puedes borrar todo y dejar name para que puedas acceder desde el código.
Pasamos a la modificación de la cadena de conexión supongamos que tenemos el método siguiente:
public void cambiarDatosServer(string localhost, string user, string pass) { String cadenaNueva = "server=" + localhost + ";user id=" + user + ";password=" + pass + ";persistsecurityinfo=True;database=namedb"; //abrimos la configuración de nuestro proyecto Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //hacemos la modificacion de la cadena de conexion (ServerDb es el atributo que tengo en app.config) config.ConnectionStrings.ConnectionStrings["ServerDb"].ConnectionString = cadenaNueva; //Cambiamos el modo de guardado config.Save(ConfigurationSaveMode.Modified,true); // modificamos el guardado Settings.Default.Save(); //Podemos revisar en la consola que configuraciones quedaron despues del comando //aqui en adelante es opcional ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings; if (settings != null) { foreach (ConnectionStringSettings cs in settings) { Console.WriteLine(cs.Name); Console.WriteLine(cs.ProviderName); Console.WriteLine(cs.ConnectionString); } } }
Se lleva tres parámetros que son básicos el servidor (Ip ), usuario y password, los cuales forma una cadena de conexión en la variable cadenaNueva.
Posteriormente creamos un objeto del tipo Configuration que podemos usar para que pueda modificar y quitar el nivel de permiso de la aplicación para guardar y posteriormente guardarlo en las configuraciones por default de nuestra aplicación con esto tendremos una cadena de conexión que puede cambiar en tiempo de ejecución.
por Dios por fin lo encontre que este bien explicado y que funcione, gracias amigo lo necesitaba mucho.
ResponderEliminarMuy bueno tu articulo, pero necesito que el archivo APP.CONFIG se modifique fisicamente en el interfaz y hasta ahora no lo he conseguido, podrias ayudarme porfavor, estoy con WPF C# solo para poder modificar en cualquier momento la ruta de la base de datos, gracias por la atencion
ResponderEliminarPerdon, me olvide decir que mi base de datos esta en appserver localhost, no es mysqlServer
ResponderEliminarFácil y practico.
ResponderEliminarGracias.