string.Format和单词“Password”

时间:2009-03-04 15:28:13

标签: c# string

使用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服务。

5 个答案:

答案 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以了解原因......