2009-12-02 2 views
4

J'ai une application console qui obtient la connectionString en tant que paramètre. Je devrais définir une ConnectionString dans app.config avec le nom 'ConnectionString' et le paramètre donné comme la chaîne de connexion sql.Est-il possible (et comment) d'ajouter ConnectionString à app.config lors de l'exécution en C#?

Thx aux réponses. Avec l'aide des liens que je suis arrivé à ceci:

var config = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None); var connectionStringSettings = new ConnectionStringSettings ("ConnectionString", _arguments ["connectionString"], "System.Data.SqlClient"); config.ConnectionStrings.ConnectionStrings.Add (connectionStringSettings); config.Save (ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection ("connectionStrings");

Répondre

-6

IGNORE CETTE REPONSE ET VOIR CI-DESSOUS ....

Oui - un coup d'oeil à this.

Cette méthode est probablement ce que vous êtes après

System.Configuration.ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("new name", "new string"); 
+10

-1, ceci entraînera 'System.Configuration.ConfigurationErrorsException: La configuration est en lecture seule. ' – cdmckay

+3

Comment cela peut-il être la réponse acceptée quand elle ne fonctionne pas! Y a-t-il un truc qui fait que cette * non * jette une exception? -1 de moi pour l'instant –

+0

cette seule ligne de code est OK. C'est le code avant et après ce qui manque :-) OPEN et économisez ???? –

10

Oui, vous pouvez certainement ajouter/modifier/supprimer les paramètres dans le app.config lors de l'exécution. C'est comme ça que je le fais habituellement.

using System.Configuration; // don't forget to add the system.configuration dll to your references. 

    public static void CreateConnectionString(string datasource, string initialCatalog, string userId, string password) 
    { 
     try 
     { 
      //Integrated security will be off if either UserID or Password is supplied 
      var integratedSecurity = string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(password); 

      //Create the connection string using the connection builder 
      var connectionBuilder = new SqlConnectionStringBuilder 
      { 
       DataSource = datasource, 
       InitialCatalog = initialCatalog, 
       UserID = userId, 
       Password = password, 
       IntegratedSecurity = integratedSecurity 
      }; 

      //Open the app.config for modification 
      var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
      //Retreive connection string setting 
      var connectionString = config.ConnectionStrings.ConnectionStrings["ConnectionStringName"]; 
      if (connectionString == null) 
      { 
       //Create connection string if it doesn't exist 
       config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings 
       { 
        Name = ConnectionName, 
        ConnectionString = connectionBuilder.ConnectionString, 
        ProviderName = "System.Data.SqlClient" //Depends on the provider, this is for SQL Server 
       }); 
      } 
      else 
      { 
       //Only modify the connection string if it does exist 
       connectionString.ConnectionString = connectionBuilder.ConnectionString; 
      } 

      //Save changes in the app.config 
      config.Save(ConfigurationSaveMode.Modified); 
     } 
     catch (Exception) 
     { 
      //TODO: Handle exception 
     } 
} 

Espérons que cela aide.

Questions connexes