0

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);
                } 
            }
4

2 に答える 2

1

Please refer to the documentation:

http://msdn.microsoft.com/en-us/library/bb387061.aspx

于 2012-10-17T14:48:59.400 に答える
1

LINQ to XML will only be able to recover the actual connectionString attribute for you. Manipulation of the actual string element is beyond LINQ to XML's capabilities. If you want to change the string itself you are going to need to manipulate it with other functions. A quick way to do that might be to split the string on = and ;. You know that every element with an even index is a key and every odd index element is a value. You can then search for the Data Source and Initial Catalog elements and modify the values in the next array locations.

于 2012-10-17T14:52:00.713 に答える