是否有可能(以及如何)在C#中在运行时将ConnectionString添加到app.config?

Lie*_*oen 5 c# connection-string app-config

我有一个控制台应用程序,它将connectionstring作为参数.我必须在app.config中设置一个名为'ConnectionString'的ConnectionString,并将给定的参数设置为sql connectionstring.

谢谢答案.借助我的链接,我得到了这个:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var connectionStringSettings = new ConnectionStringSettings("ConnectionString",_ arguments ["connectionString"],"System.Data.SqlClient"); config.ConnectionStrings.ConnectionStrings.Add(connectionStringSettings); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection( "的ConnectionStrings");

cub*_*ski 10

是的,您绝对可以在运行时在app.config中添加/修改/删除设置.这就是我通常这样做的方式.

using System.Configuration; // don't forget to add the system.configuration dll to your references.

    public static void CreateConnectionString(string datasource, string initialCatalog, string userId, string password)
    {
        try
        {
            //Integrated security will be off if either UserID or Password is supplied
            var integratedSecurity = string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(password);

            //Create the connection string using the connection builder
            var connectionBuilder = new SqlConnectionStringBuilder
            {
                DataSource = datasource,
                InitialCatalog = initialCatalog,
                UserID = userId,
                Password = password,
                IntegratedSecurity = integratedSecurity
            };

            //Open the app.config for modification
            var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            //Retreive connection string setting
            var connectionString = config.ConnectionStrings.ConnectionStrings["ConnectionStringName"];
            if (connectionString == null)
            {
                //Create connection string if it doesn't exist
                config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings
                {
                    Name = ConnectionName,
                    ConnectionString = connectionBuilder.ConnectionString,
                    ProviderName = "System.Data.SqlClient" //Depends on the provider, this is for SQL Server
                });
            }
            else
            {
                //Only modify the connection string if it does exist
                connectionString.ConnectionString = connectionBuilder.ConnectionString;
            }

            //Save changes in the app.config
            config.Save(ConfigurationSaveMode.Modified);
        }
        catch (Exception)
        {
            //TODO: Handle exception
        }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Mat*_*att -6

忽略这个答案并参见下文......

是的——看看这个

这个方法可能就是你想要的

System.Configuration.ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("new name", "new string");
Run Code Online (Sandbox Code Playgroud)

  • -1,这将导致“System.Configuration.ConfigurationErrorsException:配置是只读的。” (11认同)
  • 当它显然不起作用时,这怎么能成为公认的答案呢!有什么技巧可以让这个“不”抛出异常吗?目前我的-1 (4认同)