使用C#,我需要从几个AppSettings构建一个连接字符串。如果我这样做:
Connection = string.Format("Data Source={0};Initial Catalog={1);User Id={2};Password={3};",
ConfigurationManager.AppSettings.Get("CartServer"),
ConfigurationManager.AppSettings.Get("CartDatabase"),
ConfigurationManager.AppSettings.Get("CartUserName"),
ConfigurationManager.AppSettings.Get("CartPassword"));
我收到无效的格式字符串异常。我把它缩小到格式字符串的“Password =”部分(即“Passwork =”工作)。有一个简单的解决方法:
Connection = string.Format("Data Source={0};Initial Catalog={1);User Id={2};{3}={4};",
ConfigurationManager.AppSettings.Get("CartServer"),
ConfigurationManager.AppSettings.Get("CartDatabase"),
ConfigurationManager.AppSettings.Get("CartUserName"),
"Password",ConfigurationManager.AppSettings.Get("CartPassword")); // Lame!!!
但是“密码”的真实故事是什么?我检查了MSDN和其他一些网站但是空了。哦,如果重要的话,这是一个WCF服务。
答案 0 :(得分:15)
您的问题是格式字符串中的{1};它应该是{1}(你用括号括起括号)
这会导致您的FormatException,因为您的格式字符串现在无效。为什么你的第二次参赛作品超出了我的范围。
编辑:我同意其他理查德您应该考虑使用连接字符串构建器对象。
答案 1 :(得分:8)
您是否考虑过DbConnectionStringBuilder
班级(或其某个子类型)?
答案 2 :(得分:3)
明显......你的问题是因为:“(”。
为什么不使用StringBuilder类,更容易:)
答案 3 :(得分:0)
我只是谷歌,我不知道“DbConnectionStringBuilder”甚至存在。哇,你每天都学到新东西。
此外,对于其他连接字符串,请查看此网站:http://www.connectionstrings.com/
答案 4 :(得分:0)
为什么StringBuilder比string.Format好?
请检查此Is String.Format as efficient as StringBuilder以了解原因......