动态更改连接字符串

时间:2014-05-05 11:36:10

标签: c# asp.net sql-server-2008 connection-string

我有一个场景,我正在获得动态生成的数据库。我想为每个数据库创建一个连接字符串。因此只有初始目录参数才会发生变化。其他参数我将从Web配置文件中获取它。它已经拥有连接字符串的所有条目。我想根据创建的数据库动态更改初始目录部分。

请建议有没有办法轻松做到这一点。

3 个答案:

答案 0 :(得分:2)

使用SqlConnectionStringBuilder类

SqlConnectionStringBuilder conn = new SqlConnectionStringBuilder(ConnectionStringFromConfig)
   { InitialCatalog = "your CatalogName" }; // you can add other parameters.

然后在必要时使用此连接字符串

conn.ConnectionString;

答案 1 :(得分:1)

使用SqlConnectionStringBuilder。从配置文件中进行设置,并为每个数据库更改InitialCatalog

答案 2 :(得分:0)

尝试使用这行代码,它将根据需要更改Web配置文件中的连接字符串。我用TextBox做了这个,

 bool isNew = false;
    string path = Server.MapPath("~/Web.Config");
    XmlDocument doc = new XmlDocument();
    doc.Load(path);
    XmlNodeList list = doc.DocumentElement.SelectNodes(string.Format("connectionStrings/add[@name='{0}']", "conn"));
    XmlNode node;
    isNew = list.Count == 0;
    if (isNew)
    {
        node = doc.CreateNode(XmlNodeType.Element, "add", null);
        XmlAttribute attribute = doc.CreateAttribute("name");
        attribute.Value = "conn";
        node.Attributes.Append(attribute);

        attribute = doc.CreateAttribute("connectionString");
        attribute.Value = "";
        node.Attributes.Append(attribute);

        attribute = doc.CreateAttribute("providerName");
        attribute.Value = "System.Data.SqlClient";
        node.Attributes.Append(attribute);
    }
    else
    {
        node = list[0];
    }
    string conString = node.Attributes["connectionString"].Value;
    SqlConnectionStringBuilder conStringBuilder = new SqlConnectionStringBuilder(conString);
    conStringBuilder.InitialCatalog = T1.Text;
    node.Attributes["connectionString"].Value = conStringBuilder.ConnectionString;
    if (isNew)
    {
        doc.DocumentElement.SelectNodes("connectionStrings")[0].AppendChild(node);
    }
    doc.Save(path);

这可能暗示了你的障碍。