2009-03-04 23 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/