Cоздание файла App.Config c элементом connectionStrings

Cоздание файла App.Config c элементом connectionStrings

Продолжаем работать с приложением, созданным в предыдущей статье. Сегодня повысим гибкость, и переносимость нашего приложения, переместив строку подключения из кода программы в отдельный конфигурационный файл.

Создание и добавление файла App.Config

Чтобы создать конфигурационный файл необходимо выполнить несколько простых действий:

1. Перейдите в окно Solution Explorer

2. Нажмите правую кнопку мыши на имени текущего проекта

3. В появившемся контекстном меню выберите пункт Add, появиться дополнительное подменю, нажмите на пункт New Item.

добавление нового элемента

4. Откроется диалоговое окно со списком шаблонов. Найдите шаблон с именем Application Configuration File, если требуется, измените, имя файла, после чего нажмите на кнопку Add.

выбор шаблона

В Solution Explorer появится добавленный файл App.Config.

файл App.Config

Открываем добавленный файл, щелкнув по нему двойным кликом мыши в окне Solution Explorer.

открытый файл App.config

Файл App.Config это обычный XML файл, внутри которого по умолчанию содержится строка декларации и один корневой элемент configuration. Сам же файл конфигурации, опять же по умолчанию, хранится в папке текущего проекта.

папка проекта

Если вы не знаете, что такое XML и как с ним работать, то прочитайте статью: Введение в язык XML, в которой вкратце изложены все основные моменты.

Создание и добавление элемента connectionStrings

Создадим новый элемент connectionStrings. Для этого сначала введите знак меньше ().

добавление элемента connectionStrings

Внутри созданного элемента создадим ещё один элемент с именем add

меню авто подстановки

новый добавленный элемент

Для данного элемента добавим несколько атрибутов. Чтобы добавить атрибут нажмите на клавишу пробел после слова add, появится меню авто подстановки.

список доступных атрибутов

Выберите атрибут name и нажмите на клавишу Enter

создание атрибута name

Внутри двойных кавычек укажите любое имя, например MysqlConStr.

установка значения для элемента name

Затем добавьте следующий атрибут connectionString

атрибут connectionString

Внутри двойных кавычек нужно указать строку подключения, которая состоит из пары: ключ = значение.

Обязательные ключи:

Server указываем ip адрес или имя сервера, где лежит база данных MySQL. Предпочтительнее указывать ip адрес.

Database — имя базы данных;

Uid — пользователь;

Pwd — пароль;

Каждый пара отделяется точкой запятой, а для установки значения используется знак равно.

connectionString="Server=ip; DataBase=имяБД; Uid=логин; Pwd=пароль;"

строка подключения

Строка подключения может содержать множество других ключей, например:

Port  по умолчанию MySQL сервер использует порт 3306 и его можно не указывать, но если же по какой-то причине номер порта был изменен, то его следует указать явно.

"Server=ip; DataBase=имяБД; Uid=логин; Pwd=пароль; Port=1034;"

SslMode если при работе с базой данных вы хотите использовать безопасное соединение с сервером, то укажите для данного параметра одно из следующих значений:

Preferred если сервер поддерживает SSL (криптографический протокол, который обеспечивает безопасность связи) то будет установлено безопасное соединение, если нет, то обычное.

Required все подключения будут только через протокол ssl. Если же на сервере нет поддержки ssl, то при обычном подключении вы получите отказ в подключении к серверу.

 ...; SslMode=Preferred;"

Все остальные ключи и их описание можно найти на официальном сайте MySQL.

После добавления строки подключения, добавим ещё один атрибут providerName, который будет хранить имя поставщика данных.

providerName = "MySql.Data.MySqlClient"

поставщик услуг

полное содержимое файла App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MySQLConStr" connectionString="Server=127.0.0.1;
DataBase=mytest;
Uid=adminbd;
Pwd=123;"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>

Таким же образом можно указать любое количество строк подключения и поставщиков данных к разным базам данных: MSSQL, Oracle, Access, например:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MySQL" connectionString="Server=127.0.0.1;
DataBase=mytest;
Uid=adminbd;
Pwd=123;"
providerName="MySql.Data.MySqlClient"/>
<add name="Access" connectionString="..."  providerName="..."/>
<add name="MSSQL" connectionString="..."  providerName="..."/>
 </connectionStrings>
</configuration>

Ещё одним преимуществом файлов конфигурации, является быстрое изменение данных, которое не требует перекомпиляции проекта, ведь достаточно всего лишь внести изменения в файл XML, который является отдельным файлом.

Получение данных из файла конфигурации

Конфигурационный файл создан и теперь осталось научиться читать данные из файла App.Config.

Для начала нужно подключить в проект сборку (dll файл) System.Configuration;

добавление сборки в проект

диалоговое окно выбора сборки

добавленная сборка

2. Чтобы при написании кода обращаться к типам и членам, не используя полных имен, добавьте следующую строку:

using System.Configuration;

В предыдущей статье строка подключения была создана при помощи объекта типа MySqlConnectionStringBuilder (полный исходник здесь)

MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "mytest";
mysqlCSB.UserID = "adminbd";
mysqlCSB.Password = "123";

Удалим весь блок кода, а так же строку

con.ConnectionString = mysqlCSB.ConnectionString;

Затем напишем следующий код:

ConnectionStringSettings conString;
conString = ConfigurationManager.ConnectionStrings["MySQLConStr"];

В квадратных скобках указываем значение атрибута name элемента add. В результате в объекте conString мы получаем все значения элементов и атрибутов файла App.Config.

И последнее, что осталось сделать, это передать в объект MySqlConnection созданную строку подключения.

было

using (MySqlConnection con = new MySqlConnection(mysqlCSB.ConnectionString))

стало

using (MySqlConnection con = new MySqlConnection(conString.ConnectionString))

Либо можно сразу же не создавая объект ConnectionStringSettings передать в конструктор класса MySqlConnection конструкцию следующего вида:

СonfigurationManager.ConnectionStrings["MySQLConStr"].ConnectionString;

Видео

Читайте также:

8 комментариев

  1. А у меня в этой строке выкидывает какое то исключение. Я пока только обучаюсь и не особо могу понять, что к чему.

    using (MySqlConnection con = new MySqlConnection(conString.ConnectionString))

    Что то ругается именно на ConnectionString в кавычках.
    Предупреждение типа NullReferenceException was unhandled

  2. Мало информации&#8230; трудно сказать в чём именно проблема.

    conString.ConnectionString &#8212; это свойство, которое содержит значение connectionString в xml файле App.config

    (connectionString="Server=127.0.0.1; Uid=adminBD; Pwd=123")

    Если выдаёт null, то возможно допущена описка или неверно указано имя элемента в xml файле, либо что-то с его атрибутами.

  3. Еще есть одна особенность. При создании файла конфига в окне создания пишу название файла например MyConnect.config а создается их 2. Первый с названием App.config. Я кстати который второй создался удалил сразу. Может быть в этом причина и зачем тогда студия создает второй?
    Кстати компиляция и запуск приложения проходят нормально. Но при нажатии на кнопку, перебрасывает в студию и подсвечивает выше описанную строку с выделением на onnectionString.
    Правильность написания уже несколько раз перепроверил, даже делал копипаст вашего кода. Сейчас с нуля еще раз попробую все пересоздать.

  4. "Но при нажатии на кнопку, перебрасывает в студию и подсвечивает
    выше описанную строку с выделением на onnectionString."

    Можете полное описание ошибки добавить?

    Вы создаёте один файл (MyConnect.config), второй (App.config) создаётся автоматически VS при создании нового проекта. Поэтому в VS 2012 и выше часть с добавлением конфиг. файла можно пропустить, так как он уже добавлен по умолчанию.

  5. Ошибка возникает здесь:

    ConnectionStringSettings conString;
    conString = ConfigurationManager.ConnectionStrings["MySQLConStr"];

    conString равно null, потому что (по умолчанию) VS ищет файл App.Config, а Вы его удаляете и добавляете свой файл (MyConnect.config).

    Решение: так как используется VS2013, то создавать файл MyConnect.config не нужно, потому что App.Config уже добавлен студией, а нужно просто открыть данный файл (App.Config) и добавить в него строки подключения:

    <configuration>
    <connectionStrings>
    </connectionStrings>
    </configuration>
  6. Спасибо огромное за решение. Просто тут же переименовал файл на имя App.config и все заработало. Интересно а как тогда добавлять файл со своим именем?

  7. Например, с помощью <appSettings>, который добавляется в конфигурационный файл.

Добавить комментарий для admin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *