在 Winforms 中更改连接字符串

Posted

技术标签:

【中文标题】在 Winforms 中更改连接字符串【英文标题】:Change connection strings in Winforms 【发布时间】:2012-12-26 19:57:44 【问题描述】:

我正在开发 win 表单并且我有应用程序配置文件。我如何写入应用程序配置文件的连接字符串部分? 我当前的 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() 方法。 应用程序配置文件也没有代码。

【问题讨论】:

【参考方案1】:

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

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

修改设置代码,在获取ServerConnectionString设置的属性时将返回值改为AppConnectionString

通过这样做,您可以修改、保存或重新加载 AppConnectionString 设置,当您在应用程序上引用 ServerConnectionString 时,它将返回 AppConnectionString强>设置。试试看。

【讨论】:

【参考方案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;

【讨论】:

以上是关于在 Winforms 中更改连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

为 WinForms 应用程序加密 app.config 中的连接字符串

如何在运行时以编程方式从本地数据库获取连接字符串?时间:2019-06-01 标签:c#winforms

未知计算机的 C# WinForms SQL Server Express(本地数据库)连接字符串

更改 WinForms RichTextBox 中文本的颜色 [重复]

使用 Entityframework Core,如何在不更改连接字符串的情况下动态更改我连接的 MySql 数据库?

在 C# 中更改 Excel Power Query 连接字符串