2009-03-04 20 views
1

使用C#,我需要从几个AppSettings建立一个连接字符串。如果我这样做:string.Format和单词“密码”

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

有一个小的可能性,你的第二个例子是不是究竟是如何在你的出处吗? – 2009-03-04 15:37:16

+0

是的,有很大的可能性! – 2009-03-04 15:38:45

回答

15

您的问题是格式字符串中的{1};它应该是{1}(用括号括起大括号)

这会导致您的FormatException,因为您的格式字符串现在无效。为什么你的第二项入门作品超出了我的想象。

编辑:我同意其他理查德,你应该考虑使用连接字符串生成器对象。

8

您是否考虑过DbConnectionStringBuilder类(或其某个子类型)?

3

明显的....你的问题是因为这个。“(”

你为什么不使用StringBuider类,很容易:)

0

我只是Google'd,我不知道一个“DbConnectionStringBuilder”甚至存在。哇,你每天都会学到新的东西。

此外,对于其他连接字符串,检查该网站指出:http://www.connectionstrings.com/