C#如何更新配置文件中的连接字符串

发布时间 2023-04-03 17:42:21作者: zhaotianff

以MySql为例 ,其它数据库使用方法一样

说明:正常情况下,如果数据库在本机,尽量使用Windows身份验证,如果不在本机,连接字符串里的密码也是需要加密存储,本文只做演示,所以直接使用明文密码。

如下在App.config中添加了两条如下连接字符串

 

 

 

第一条是使用ADO.Net使用的连接字符串,第二条是EF使用的连接字符串。

 

先了解一下 XXSqlConnectionStringBuilder类,它的作用是为创建和管理由 SqlConnection 类使用的连接字符串的内容提供了一种简单方法。

说明:针对不同的数据库,需要将前面的XX修改为不同的数据库名称,如使用的是MySQL数据库,就是MySqlConnectionStringBuilder,SQL Server就是SqlConnectionStringBuilder

它的使用方法如下:

 

通过构造函数传入连接字符串,然后可以对连接字符串中的键值进行操作。

1 MySqlConnectionStringBuilder mySqlConnectionStringBuilder =new MySqlConnectionStringBuilder("连接字符串");
 1             //输出
 2             Console.WriteLine(mySqlConnectionStringBuilder.Server); 
 3             Console.WriteLine(mySqlConnectionStringBuilder.Port);
 4             Console.WriteLine(mySqlConnectionStringBuilder.Database);
 5             Console.WriteLine(mySqlConnectionStringBuilder.UserID);
 6             Console.WriteLine(mySqlConnectionStringBuilder.Password);
 7 
 8             //更新
 9             mySqlConnectionStringBuilder.Server = "localhost";
10             mySqlConnectionStringBuilder.Port = 10250;
11             mySqlConnectionStringBuilder.Database = "ttt";
12             mySqlConnectionStringBuilder.UserID = "testuser";
13             mySqlConnectionStringBuilder.Password = "abc";
14 
15             //获取更新后的连接字符串
16             var newCon = mySqlConnectionStringBuilder.ConnectionString;
17             Console.WriteLine(newCon);

 

运行结果如下:

 

 

更新ADO.Net连接字符串

1             //保存到当前程序配置文件
2             Configuration config = ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location);
3             config.ConnectionStrings.ConnectionStrings["con1"].ConnectionString = newCon;
4             config.Save(ConfigurationSaveMode.Modified, false);
5             ConfigurationManager.RefreshSection("connectionStrings");

 

更新EF连接字符串

1         EntityConnectionStringBuilder efb = new EntityConnectionStringBuilder(con2);
2             efb.ProviderConnectionString = mySqlConnectionStringBuilder.ConnectionString;
3             config.ConnectionStrings.ConnectionStrings["con2"].ConnectionString = efb.ConnectionString;
4             config.Save(ConfigurationSaveMode.Modified, false);
5             ConfigurationManager.RefreshSection("connectionStrings");