2008-09-15 20 views
9

Me gustaría modificar programáticamente la cadena de conexión para una base de datos que utiliza el proveedor de membresía de asp.net dentro de una aplicación de Windows. El espacio de nombres de configuración del sistema permite cambios en la configuración del usuario, sin embargo, nos gustaría ajustar la configuración de la aplicación. ¿Es necesario escribir una clase con XML para modificar la clase? ¿Es necesario eliminar las conexiones actuales (puede uno seleccionar una conexión para borrarlas) y agregar una nueva? ¿Se puede ajustar la cadena de conexión existente?VS2005 C# Cambiar programáticamente cadena de conexión contenida en app.config

Respuesta

6

Puede abrir mediante programación la configuración con el uso del espacio de nombres System.Configuration:

Configuration myConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

A continuación, puede acceder a la colección de cadenas de conexión en:

myConfig.ConnectionStrings.ConnectionStrings

Puede modificar el colección como desee, y cuando termine llame al .Save() en el objeto de configuración.

0

Use la clase ConnectionStringsSection. La documentación incluso proporciona un ejemplo sobre cómo crear un ConnectionString nuevo y hacer que el marco lo guarde en el archivo de configuración sin tener que implementar todo el shebang XML.

Consulte here y busque un ejemplo.

8
// Get the application configuration file. 
System.Configuration.Configuration config = 
     ConfigurationManager.OpenExeConfiguration(
     ConfigurationUserLevel.None); 

// Create a connection string element and 
// save it to the configuration file. 

// Create a connection string element. 
ConnectionStringSettings csSettings = 
     new ConnectionStringSettings("My Connection", 
     "LocalSqlServer: data source=127.0.0.1;Integrated Security=SSPI;" + 
     "Initial Catalog=aspnetdb", "System.Data.SqlClient"); 

// Get the connection strings section. 
ConnectionStringsSection csSection = 
    config.ConnectionStrings; 

// Add the new element. 
csSection.ConnectionStrings.Add(csSettings); 

// Save the configuration file. 
config.Save(ConfigurationSaveMode.Modified); 
+0

Esto es para agregar una cadena de conexión, no modificar una cadena existente – Thomas

9

Tuvimos que hacer esto exactamente. Este es el código que funcionó para mí:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
connectionStringsSection.ConnectionStrings["Blah"].ConnectionString = "Data Source=blah;Initial Catalog=blah;UID=blah;password=blah"; 
config.Save(); 
ConfigurationManager.RefreshSection("connectionStrings"); 
Cuestiones relacionadas