如何创建允许用户修改应用程序属性的设置表单?

时间:2014-10-01 03:40:13

标签: c#-4.0 properties connection-string installation desktop-application

对于Web应用程序,用户需要更改数据库/ Web服务连接字符串。 对于桌面应用程序,用户需要更改数据库连接字符串。

如何使用设置文件/安装程序打包桌面和Web应用程序,允许用户使用设置表单根据需要修改连接字符串?

1 个答案:

答案 0 :(得分:0)

ConfigurationManager类将允许您读取连接字符串。

using System.Configuration;

public string GetConfig(){
     return ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;
}

但是,您要修改文件中的ConnectionStrings配置,您必须使用XmlDocument类。这比使用ConfigurationManager更复杂,在我看来是正确的,因为在错误的时间更改数据库连接字符串可能会导致正在运行的查询集中断并使数据无效。

using System.Xml;

private void ManageConfiguration()
{
    // Load Configuration
    XmlDocument xdoc = new XmlDocument();
    xdoc.Load(APP_CONFIG_LOCATION);
    XmlNode xnodes = xdoc.SelectSingleNode("/connectionStrings");
    if (xnodes.IsDefault()) return;

    // Read All Current Connection Strings
    foreach (XmlNode xnn in xnodes.ChildNodes) {
        if (xnn.Name == "add") {
            Console.WriteLine(xnn.Attributes["name"] + ", " + xnn.Attributes["providerName"] + ": " + xnn.Attributes["connectionString"]);
        }
    }

    // Add Connection String
    XmlNode newConnection = xdoc.CreateNode(XmlNodeType.Element, "add", null);

    XmlAttribute nameAttr = xdoc.CreateAttribute("name");
    XmlAttribute connectionStringAttr = xdoc.CreateAttribute("connectionString");
    XmlAttribute providerNameAttr = xdoc.CreateAttribute("providerName");

    nameAttr.Value = "New Connection";
    connectionStringAttr.Value = "..........";
    providerNameAttr.Value = "..........";

    newConnection.Attributes.Append(nameAttr);
    newConnection.Attributes.Append(connectionStringAttr);
    newConnection.Attributes.Append(providerNameAttr);

    xnodes.AppendChild(newConnection);

    // Save Configuration
    xdoc.Save(APP_CONFIG_LOCATION);
}