如何使用ConnectionString
更改LINQ to XML
的部分内容。例如,我只想更改以下内容中的Data Source
和Initial Catalog
值:
<connectionStrings>
<add name="connStr" connectionString="Data Source=data-source;Initial Catalog=db;User ID=user;Password=pass" providerName="System.Data.SqlClient;MultipleActiveResultSets=true;" />
</connectionStrings>
我理解如何更改整个connectionString属性,但我不想这样做,我只想更改某些部分。
我使用以下代码修改连接字符串的部分,并且大多数情况下它都有效,但是我如何修改它以便它不会删除未被;
分隔的属性/值,在这种情况下providerName
。
string[] connArr = connectionString.Value.Split(';');
for (int i = 0; i < connArr.Length; i++)
{
//Get the attribute and the value splitted by the "="
string[] arrSubConn = connArr[i].Split('=');
if (arrSubConn.Length == 2)
{
string connAttr = arrSubConn[0];
string connVal = arrSubConn[1];
//Change the server name
if (connAttr == "Data Source")
connVal = environmentSettings.Server;
//Change the database name
if (connAttr == "Initial Catalog")
connVal = environmentSettings.Database;
newConnString += String.Format("{0}={1};", connAttr, connVal);
}
}
答案 0 :(得分:1)
答案 1 :(得分:1)
LINQ to XML只能为您恢复实际的connectionString属性。操作实际的字符串元素超出了LINQ to XML的功能。如果要更改字符串本身,则需要使用其他函数对其进行操作。一种快速的方法可能是将字符串拆分为=和;.您知道具有偶数索引的每个元素都是键,每个奇数索引元素都是一个值。然后,您可以搜索“数据源”和“初始目录”元素,并修改下一个阵列位置中的值。