【问题标题】:Overwrite connection string stored in app.config in C# winforms在 C# winforms 中覆盖存储在 app.config 中的连接字符串
【发布时间】:2013-11-30 21:39:23
【问题描述】:

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

我的 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 和它的用法还比较陌生。

【问题讨论】:

    标签: c# winforms runtime app-config


    【解决方案1】:

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

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

    相反,使用ConfigurationManager.ConnectionStrings 以外的方式将连接字符串提供给任何需要它的对象。

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

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

    应用程序设置架构支持定义具有应用程序或用户范围的强类型设置,并在应用程序会话之间保持设置。

    【讨论】:

      【解决方案2】:

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

      参考链接。 Application Setting

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

      【讨论】:

        猜你喜欢
        • 2011-02-18
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-22
        相关资源
        最近更新 更多