2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用正確的工具完成工作 - SqlConnectionStringBuilder 類
生成器將轉(zhuǎn)義反斜杠并為 Sql Server 連接構(gòu)建正確的連接字符串。
var builder = new SqlConnectionStringBuilder
{
DataSource = @"IP_ADDRESS\INSTANCE",
InitialCatalog = "DbName",
UserID = "MyUserId",
Password = "MyPassword"
};
var connectionString = builder.ConnectionString;
// Use connection string
optionsBuilder.UseSqlServer(connectionString );
因此,您的方法可以如下所示:
private SqlConnectionStringBuilder BuilderFromElement(XElement source)
{
return new SqlConnectionStringBuilder
{
DataSource = source.Attribute("Server")?.Value,
InitialCatalog = source.Attribute("Database")?.Value,
UserID = source.Attribute("UserID")?.Value,
Password = source.Attribute("Password")?.Value
};
}
private string GetConnectionString()
{
var settings = XDocument.Load("Settings.xml");
var allConnectionStrings =
settings.Descendants("DataSource")
.Select(BuilderFromElement)
.Select(builder => builder.ConnectionString)
return allConnectionStrings.FirstOrDefault();
}

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
查看 xml 文件中反斜杠的用法。
在某些上下文中,可以是轉(zhuǎn)義的 \,作為文字,它是 2 個(gè)斜杠。\\
此代碼說明了這一點(diǎn):這些字符串不相等。
String s= "Server=IP\\INSTANCE_NAME;Database=db;User id=User ;Password=pwd;";
String s2= @"Server=IP\\INSTANCE_NAME;Database=db;User id=User ;Password=pwd;";
Console.WriteLine(s2== s);
如果您嘗試使用localhost進(jìn)行此操作,它是否按照您的期望方式工作?如果是這樣:罪魁禍?zhǔn)资?.
您還可以查看這是否有效。
optionsBuilder.UseSqlServer(@"Server=Server=IP\\INSTANCE_NAME;Database=DB;User id=User ;Password=pwd;");
希望這有幫助!
- 2 回答
- 0 關(guān)注
- 365 瀏覽
添加回答
舉報(bào)