Add
Добавляет параметр подключения (пару «ключ/значение») в текущий объект DbConnectionStringBuilder.
Вызов метода Add
с именем ключа, равным NULL, приводит к выдаче исключения ArgumentNullException.
Вызов метода Add
со значением ключа, равным NULL, приводит к удалению из строки подключения пары «ключ/значение».
Строка подключения анализируется с помощью алгоритма «по последнему значению», т. е. если в строке пара «ключ/значение» встречается несколько раз, то используется самое последнее значение.
Выполняются проверки на допустимые пары «ключ-значение», и недопустимая пара вызывает исключение.
При добавлении дубликата ключа выполняется изменение значения ключа.
Примечание
Свойство Item можно также использовать для установки значения ключа, например, myCollection["myKey"] = myValue.
Синтаксис
public void Add(string keyword, Object value);
keyword
– имя добавляемого ключа.
value
– значение добавляемого ключа.
Возвращаемое значение
Значение типа void.
Исключения
ArgumentNullException | Null-значение ключа. | |
FormatException | Попытка добавить неподдерживаемый ключ. | |
NotSupportedException | Возможные причины:
|
Примеры
1) Переопределение существующего ключа.
// C# using System; using System.Data; using System.Data.Common; class ConnectionStringBuilderSample { static void Main() { try { // Создание фабрики классов провайдера DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient"); // Создание объекта DbConnectionStringBuilder DbConnectionStringBuilder builder = factory.CreateConnectionStringBuilder(); builder.Add("Data Source", "LOCAL"); builder.Add("User ID", "SYSTEM"); builder.Add("Password", "MANAGER8"); // Переопределение существующего значения "User ID" builder.Add("User ID", "SYS"); // Следующая команда генерирует исключение ArgumentNullException // builder.Add(null, "некоторое значение"); Console.WriteLine(builder.ConnectionString); } catch (ArgumentNullException) { Console.WriteLine("Не допускается ключ с именем null"); } Console.WriteLine(); Console.WriteLine("Нажмите клавишу Ввод для завершения"); Console.ReadLine(); } }
2) Добавление нового ключа.
// C# using System; using System.Data; using System.Data.Common; class ConnectionStringBuilderSample { static void Main() { try { // Создание фабрики классов провайдера DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient"); // Создание объекта DbConnectionStringBuilder DbConnectionStringBuilder builder = factory.CreateConnectionStringBuilder(); // Следующая команда генерирует исключение ArgumentException builder.Add("неизвестный ключ", "некоторое значение"); } catch (ArgumentException) { Console.WriteLine("Неизвестный ключ"); } Console.WriteLine(); Console.WriteLine("Нажмите клавишу Ввод для завершения"); Console.ReadLine(); } }
3) Обработка дополнительного значения ключа Data Source.
Результат выполнения примера показывает, что объект DbConnectionStringBuilder правильно выполняет обработку ключа путем экранирования дополнительного значения, заключенного в двойные кавычки, вместо того чтобы добавить его в строку подключения в качестве новой пары «ключ-значение».
// C# using System; using System.Data; using System.Data.Common; class ConnectionStringBuilderSample { static void Main() { // Создание фабрики классов провайдера DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient"); // Создание объекта DbConnectionStringBuilder DbConnectionStringBuilder builder = factory.CreateConnectionStringBuilder(); builder.Add("Data Source", "LOCAL;NewValue=Bad"); builder.Add("User ID", "SYSTEM"); builder.Add("Password", "MANAGER8"); Console.WriteLine(builder.ConnectionString); Console.WriteLine(); Console.WriteLine("Нажмите клавишу Ввод для завершения"); Console.ReadLine(); } } Результат выполнения примера: DataSource="LOCAL;NewValue=Bad";UserID=SYSTEM;Password=MANAGER8