2009-03-04 2 views
1

C#을 사용하여 몇 개의 AppSettings에서 연결 문자열을 만들어야합니다. 내가 이렇게하면 :string.Format 및 "Password"단어

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 ="works). 간편한 해결 방법이 있습니다.

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

두 번째 예는 원래 소스에 정확히 어떻게하지 않은 작은 가능성이 ...이 Is String.Format as efficient as StringBuilder 이유를 확인하십시오? –

+0

예 강력한 가능성이 있습니다! –

답변

15

문제는 {1} 형식 문자열입니다. {1}이어야합니다 (괄호로 중괄호를 닫았습니다)

형식 문자열이 유효하지 않기 때문에 FormatException이 발생합니다. 왜 두 번째 입국 작품은 저 밖에 있습니다.

편집 : 다른 리차드와 연결 문자열 작성기 개체를 사용하는 것이 좋습니다.

8

DbConnectionStringBuilder 클래스 (또는 해당 하위 유형 중 하나)를 고려 했습니까?

3

명백한 ....이 때문에 문제가된다. "("

가 왜 StringBuider 클래스를 사용하지 않는

:)

+0

이 말이 아닙니까 : ")"? –

+0

내 표를 얻지 만, StringBuilder가 더 쉬운 방법을보고 싶습니다. string.Format (일단 중괄호에 익숙해지면)은 쉽게 얻을 수있는 것처럼 보입니다. StringBuilders에 성능상의 이점이 있다는 것을 알고 있지만 누구보다 쉽다는 것을 알지 못합니다. – dnord

+1

예! 얼마나 당황 스럽습니까? 제 방위에서는} VS2008의 기본 글꼴이 매우 비슷합니다. –

0

나는 단지 Google'd 쉽게 나는 몰랐다 "DbConnectionStringBuilder"도 존재했습니다. 와우, 매일 새로운 것을 배웁니다.

또한, 다른 연결 문자열을,이 사이트를 체크 아웃 : http://www.connectionstrings.com/

0

의 StringBuilder가 및 String.format보다 더 나은 이유는 무엇입니까?

관련 문제