在Winforms中更改连接字符串

时间:2013-01-12 08:28:49

标签: c# winforms visual-studio-2010 configuration app-config

我正在开发win表单,我有App配置文件。如何写入app配置文件的连接字符串部分?  我当前的App.Config文件是

  <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
     <add name="MyDbConnection" connectionString="" providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>

和我改变连接字符串的C#代码是

var Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var connectionStringsSection = (ConnectionStringsSection)Config.GetSection("connectionStrings");
                ConfigurationManager.ConnectionStrings["MyDbConnection"].ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + "";
                Config.Save();
                ConfigurationManager.RefreshSection("connectionStrings");

然而,在第3行生成异常

configuration error exception this configuration is read only

更改连接字符串的代码是从外部类调用的。我不知道在哪里放置代码来覆盖IsReadonly()方法。 app config也没有代码隐藏文件。

2 个答案:

答案 0 :(得分:2)

<强>的App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <connectionStrings>
      <add name="MyDBConnectionString" providerName="System.Data.SqlClient"
            connectionString="Data Source=localhost;Initial Catalog=MySQLServerDB; Integrated Security=true" />
   </connectionStrings>
</configuration>

在App.config文件中保存连接字符串时,可以使用System.Configuration.ConfigurationManager类在代码中读取此连接字符串。

ConnectionStringSettings  conSettings = ConfigurationManager.ConnectionStrings["MyDBConnectionString"];

ConnectionStringsSettings类提供了读取程序中连接字符串设置的属性,如下所示:

string name = conSettings.Name;
string providerName = conSettings.ProviderName;
string connectionString = conSettings.ConnectionString;

答案 1 :(得分:1)

要在 App.config 文件中编写连接字符串,您可以使用:

创建两个设置,例如: AppConnectionString (类型:字符串)和 ServerConnectionString (类型:ConnectionString)

修改设置代码,在 ServerConnectionString 设置的get属性上将返回值更改为 AppConnectionString

通过执行此操作,您可以修改,保存或重新加载 AppConnectionString 设置,当您在应用程序上引用 ServerConnectionString 时,它将返回 AppConnectionString 设定。试试吧。