Ashok
Ashok

Reputation: 1906

Overwrite connection string stored in app.config in C# winforms

Hi I am developing an application for that I am taking connection string through dynamically from user at first time run.

My app.config is

 <connectionStrings>
 <add name="DConnection" connectionString=""
     providerName="MySql.Data.MySqlClient"/>
 <add name="SConnection" connectionString="" 
     providerName="System.Data.SqlClient" />
 </connectionStrings>

I am assigning connection string to app.config's attributes by using below methods

private void CheckingSource(string constr)
    {
        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.ConnectionStrings.ConnectionStrings["SConnection"].ConnectionString = constr; //CONCATINATE YOUR FIELDS TOGETHER HERE
        config.Save(ConfigurationSaveMode.Modified, true);
        ConfigurationManager.RefreshSection("connectionStrings");
    }

private void CheckingDestination(string constr)
    {
        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.ConnectionStrings.ConnectionStrings["DConnection"].ConnectionString = constr; //CONCATINATE YOUR FIELDS TOGETHER HERE
        config.Save(ConfigurationSaveMode.Modified, true);
        ConfigurationManager.RefreshSection("connectionStrings");
    }

Now I have to write this connection string to app.config so when user run application next time these updated connection strings should be in use.

How can we manage it? I don't have any idea as I am still fresher to app.config and it's usage.

Upvotes: 1

Views: 9879

Answers (2)

Ashok
Ashok

Reputation: 1906

Thanks @ta.speot.is resolved the issue using application setting.

Reference link. Application Setting

might be helpful to all needy. Cheers.. :)

Upvotes: 1

ta.speot.is
ta.speot.is

Reputation: 27214

Now I have to write this connection string to app.config so when user run application next time these updated connection strings should be in use.

You shouldn't do this, the app.config file might be deployed to somewhere like C:\Program Files\Your Application which is not writeable by normal users.

Instead, supply the connection string to whatever needs it in some way other than using ConfigurationManager.ConnectionStrings.

using (var connection = new SqlConnection(GetConnectionStringFromUser())) { ...

With specific regards to "saving" a connection string, you should look at some sort of persistence mechanism like .NET's Application Settings.

The application settings architecture supports defining strongly typed settings with either application or user scope, and persisting the settings between application sessions.

Upvotes: 4

Related Questions