覆盖存储在C#winforms中的app.config中的连接字符串

时间:2013-11-30 10:32:18

标签: c# winforms runtime app-config

您好我正在开发一个应用程序,我在第一次运行时动态地从用户那里获取连接字符串。

我的app.config是

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

我使用以下方法

为app.config的属性分配连接字符串
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");
    }

现在我必须将此连接字符串写入app.config,以便用户在下次使用这些更新的连接字符串时运行应用程序。

我们如何管理它?我没有任何想法,因为我对app.config和它的用法仍然更新鲜。

2 个答案:

答案 0 :(得分:4)

  

现在我必须将此连接字符串写入app.config,以便用户在下次使用这些更新的连接字符串时运行应用程序。

您不应该这样做,app.config文件可能会被部署到C:\Program Files\Your Application这样的地方,而 可以被普通用户写入。

相反,除了使用ConfigurationManager.ConnectionStrings之外,还可以通过某种方式提供连接字符串。

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

关于“保存”连接字符串的具体问题,你应该看看某种持久性机制,如.NET的Application Settings

  

应用程序设置体系结构支持使用应用程序或用户范围定义强类型设置,并在应用程序会话之间保持设置。

答案 1 :(得分:1)

谢谢@ ta.speot.is使用应用程序设置解决了这个问题。

参考链接。 Application Setting

可能对所有有需要的人有所帮助。干杯...... :)