Строка. Формат и слово «Пароль» - PullRequest
1 голос
/ 04 марта 2009

Используя 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 ]

15 голосов
/ 04 марта 2009

Ваша проблема - {1) в строке формата; должно быть {1} (вы закрыли скобку скобкой)

Это вызывает ваше исключение FormatException, поскольку ваша строка формата теперь недопустима. Почему ваша вторая запись работает, мне не понятно.

Редактировать: Я согласен с другим Ричардом, что вам следует рассмотреть возможность использования объекта построителя строки соединения.

8 голосов
/ 04 марта 2009

Рассматривали ли вы класс DbConnectionStringBuilder (или один из его подтипов)?

3 голосов
/ 04 марта 2009

Очевидно .... ваша проблема в том, что это: "(".

Почему бы вам не использовать класс StringBuider, проще:)

0 голосов
/ 05 марта 2009

Почему StringBuilder лучше string.Format?

Пожалуйста, отметьте Является ли String.Format столь же эффективным, как StringBuilder , чтобы понять почему ...

0 голосов
/ 04 марта 2009

Я просто Google'd, и я понятия не имел, "DbConnectionStringBuilder" даже существует Ух ты, ты учишься чему-то новому каждый день.

Также, для других строк подключения, проверьте этот сайт: http://www.connectionstrings.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...