C#如何更新配置文件中的连接字符串
以MySql为例 ,其它数据库使用方法一样。
说明:正常情况下,如果数据库在本机,尽量使用Windows身份验证,如果不在本机,连接字符串里的密码也是需要加密存储,本文只做演示,所以直接使用明文密码。
如下在App.config中添加了两条如下连接字符串
第一条是使用ADO.Net使用的连接字符串,第二条是EF使用的连接字符串。
XXSqlConnectionStringBuilder类
先了解一下 XXSqlConnectionStringBuilder类,它可以方便的对连接字符串进行操作。
说明:针对不同的数据库,需要将前面的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);
运行结果如下:
Configuration类
Configuration类可以对程序配置文件进行操作。在更新连接字符串时
需要以下步骤:
1、调用 ConfigurationManager.OpenExeConfiguration 打开当前程序的配置文件,得到Configuration对象
2、通过Configuration对象更新连接字符串
3、保存到配置文件
4、刷新配置文件节点
更新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 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 2 EntityConnectionStringBuilder efb = new EntityConnectionStringBuilder(con2); 3 efb.ProviderConnectionString = mySqlConnectionStringBuilder.ConnectionString; 4 config.ConnectionStrings.ConnectionStrings["con2"].ConnectionString = efb.ConnectionString; 5 config.Save(ConfigurationSaveMode.Modified, false); 6 ConfigurationManager.RefreshSection("connectionStrings");
参考资料:
Configuration 类
SqlConnectionStringBuilder 类