【问题标题】:How to modify ConnectionString in app.config file from VB.NET windows application?如何从 VB.NET windows 应用程序修改 app.config 文件中的 ConnectionString?
【发布时间】:2012-12-06 16:44:49
【问题描述】:

我想更改写在 app.config 文件中的应用程序的连接字符串。我喜欢直接从我的应用程序中更改连接字符串。

我的 app.config 看起来像:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    ...
  <connectionStrings>
    <add name="ApplicationName.My.MySettings.ConnectionS"
      connectionString="Data Source=xxx;Initial Catalog=xxx;User ID=xxx;Password=xxx"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="Test"   value="/"  />
  </appSettings>
</configuration>

我可以使用以下代码在 appSettings 中进行更改:

Dim config As System.Configuration.Configuration = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
config.AppSettings.Settings("Test").Value = "New value"

但我无法在安装应用程序时调试时在 connectionStrings 中进行更改:

Dim config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim connectionStringsSection = DirectCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
connectionStringsSection.ConnectionStrings("ApplicationName.My.MySettings.ConnectionS").ConnectionString = "New connection string"
config.Save()
ConfigurationManager.RefreshSection("connectionStrings")

【问题讨论】:

    标签: vb.net connection-string app-config configurationmanager


    【解决方案1】:
    Dim c As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location)
    Dim section As ConnectionStringsSection = DirectCast(c.GetSection("connectionStrings"), ConnectionStringsSection)
    section.ConnectionStrings("Services.My.MySettings.hassanConnectionString").ConnectionString = createCnxString()
    c.Save()
    
    
    Private Function createCnxString() As String
        Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder
        builder("Data Source") = datasourceTxt.Text
        builder("Integrated Security") = True
        builder("Initial Catalog") = "XXXX"
        builder("User ID") = usernameTxt.Text
        builder("Password") = passwordTxt.Text
        Return builder.ConnectionString
    End Function
    

    【讨论】:

      【解决方案2】:

      要在代码中更改它,请尝试以下操作;

      Dim con1 = ConfigurationManager.ConnectionStrings("connection1")
      Dim con2 = ConfigurationManager.ConnectionStrings("connection2")
      

      “connection1”和“connection2”是 app.config 中连接字符串的名称。

      【讨论】:

      • 好的,我再看看对不起!
      猜你喜欢
      • 2011-05-13
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2010-10-02
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多