最近进行与C#.net有关的项目开发,进行的过程中需求上要求通过windows窗口进行数据库连接字符串的输入,无须编写数据访问代码,通过xml配置文件进行数据连接配置,避免在更换数据库的时候要进入代码中更改很多地方,然而在实现这个功能的时候遇到了很多的问题
怎样读写App.config文件,尤其是在修改文件中的value的值的时候,开始运行之后App.config中并没有修改过来,而且很疑惑的是我每次都要运行两次之后才能和数据库顺利连接,登录成功,查阅了很多的资料,但是都没有头绪,后来我在代码后添加了以下语句就解决问题了
//刷新,否则程序读取的还是之前的值(可能已装入内存)
System.Configuration.ConfigurationManager.RefreshSection("appSettings");
在网上查阅资料的时候看见前辈们介绍的
上面很好的解决了为什么明明App.config文件中的value的值修改了,但是App.config文件里并没有显示修改后的数据的问题,但是我经过多次实验后发现,编译后的程序,EXE.config文件在程序运行中不会发生改变,但是程序运行中所做的更改都保存在.vshost.exe.config中,因此我对上面的说法个人表示有点疑惑,希望能得以解惑。
实现数据库配置问题的过程中我发现了三种实现方法,
1.
public static void SetValue(string AppKey, string AppValue)
{
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");
System.Xml.XmlNode xNode;
System.Xml.XmlElement xElem1;
System.Xml.XmlElement xElem2;
xNode = xDoc.SelectSingleNode("//appSettings");
xElem1 = (System.Xml.XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
if (xElem1 != null) xElem1.SetAttribute("value", AppValue);
else
{
xElem2 = xDoc.CreateElement("add");
xElem2.SetAttribute("key", AppKey);
xElem2.SetAttribute("value", AppValue);
xNode.AppendChild(xElem2);
}
xDoc.Save(System.Windows.Forms.Application.ExecutablePath + ".config");
Sys