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