我有一个场景,我正在获得动态生成的数据库。我想为每个数据库创建一个连接字符串。因此只有初始目录参数才会发生变化。其他参数我将从Web配置文件中获取它。它已经拥有连接字符串的所有条目。我想根据创建的数据库动态更改初始目录部分。
请建议有没有办法轻松做到这一点。
答案 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);
这可能暗示了你的障碍。