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

Возможные причины:

  • объект DbConnectionStringBuilder доступен только для чтения;

  • объект DbConnectionStringBuilder имеет фиксированный размер.

Примеры

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