如何在C#中更新app.config connectionstring数据源值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中更新app.config connectionstring数据源值?相关的知识,希望对你有一定的参考价值。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["MyConnectionString",String.Format("DataSource={0};")].ConnectionString=textBox1.Text;
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

我在第二行遇到麻烦。我似乎无法使语法正确。如您所见,我只想更新DataSource值。例如,如果当前值是Data Source = PC001 SQL2008EXPRESS,我希望它更新为客户端在textBox1中输入的内容。

编辑:示例ConnectionString

<add name="ERPDatabaseTables" connectionString="metadata=res://*/ERPTables.csdl|res://*/ERPTables.ssdl|res://*/ERPTables.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=PC001SQL2008EXPRESS;Initial Catalog=MyDatabase.mdf;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>

所以想要仅更新Data Source = PC001 SQL2008EXPRESS部分

答案

你真正想要的是:

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

// Because it's an EF connection string it's not a normal connection string
// so we pull it into the EntityConnectionStringBuilder instead
EntityConnectionStringBuilder efb = 
    new EntityConnectionStringBuilder(
        config.ConnectionStrings.ConnectionStrings["ERPDatabaseTables"]
            .ConnectionString);

// Then we extract the actual underlying provider connection string
SqlConnectionStringBuilder sqb = 
    new SqlConnectionStringBuilder(efb.ProviderConnectionString);

// Now we can set the datasource
sqb.DataSource = textBox1.Text;

// Pop it back into the EntityConnectionStringBuilder 
efb.ProviderConnectionString = sqb.ConnectionString;

// And update...
config.ConnectionStrings.ConnectionStrings["ERPDatabaseTables"]
    .ConnectionString = efb.ConnectionString;

config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

这假定:

  1. 您的EF连接字符串存在于应用程序的配置文件中
  2. 你有参考System.Data.Entity

以上是关于如何在C#中更新app.config connectionstring数据源值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中更新 app.config 连接字符串数据源值?

如何防止 Visual Studio 提示从 app.config 更新 .settings 文件

c# - 在运行时更改 App.Config 后,实体框架 ConnectionString 不会更新

在 C# 运行时读取、写入和更新 app.config 文件中的连接字符串

如何使用 ConfigurationManager 通过 ClickOnce 更新持久化 app.config?

如何在 app.config 中添加换行符?