2008-09-15 9 views
9

Souhaitez modifier par programme la chaîne de connexion pour une base de données qui utilise le fournisseur d'appartenances de asp.net dans une application Windows. L'espace de noms system.configuration permet de modifier les paramètres utilisateur, cependant, nous aimerions ajuster un paramètre d'application? Est-il nécessaire d'écrire une classe avec XML pour modifier la classe? Faut-il supprimer les connexions actuelles (peut-on sélectionner une connexion à effacer) et en ajouter une nouvelle? Peut-on ajuster la chaîne de connexion existante?VS2005 C# Modifier par programme la chaîne de connexion contenue dans app.config

Répondre

6

Vous pouvez programatically ouvrir la configuration avec l'aide de l'espace de noms System.Configuration:

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

Ensuite, vous pouvez accéder à la collection à des chaînes de connexion:

myConfig.ConnectionStrings.ConnectionStrings

Vous pouvez modifier la la collection que vous voulez, et une fois terminé, appelez .Save() sur l'objet de configuration.

0

Utilisez la classe ConnectionStringsSection. La documentation fournit même un exemple sur la façon de créer un nouveau ConnectionString et le framework l'enregistre dans le fichier de configuration sans avoir à implémenter le shebang XML entier.

Voir here et parcourir pour un exemple.

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

Ceci est d'ajouter une chaîne de connexion, pas modifier un existant – Thomas

9

Doit faire exactement cela. C'est le code qui a fonctionné pour moi:

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"); 
Questions connexes