0

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"

しかし、アプリケーションがインストールされているときに nither をデバッグしている間、 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")
4

2 に答える 2

0

コードで変更するには、次のようにします。

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

「connection1」と「connection2」は、app.config 内の接続文字列の名前です。

于 2012-12-19T11:34:49.857 に答える
0
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
于 2014-03-19T13:39:23.320 に答える