Cоздание файла App.Config c элементом connectionStrings
Продолжаем работать с приложением, созданным в предыдущей статье. Сегодня повысим гибкость, и переносимость нашего приложения, переместив строку подключения из кода программы в отдельный конфигурационный файл.
Создание и добавление файла App.Config
Чтобы создать конфигурационный файл необходимо выполнить несколько простых действий:
1. Перейдите в окно Solution Explorer
2. Нажмите правую кнопку мыши на имени текущего проекта
3. В появившемся контекстном меню выберите пункт Add, появиться дополнительное подменю, нажмите на пункт New Item.
4. Откроется диалоговое окно со списком шаблонов. Найдите шаблон с именем Application Configuration File, если требуется, измените, имя файла, после чего нажмите на кнопку Add.
В Solution Explorer появится добавленный файл App.Config.
Открываем добавленный файл, щелкнув по нему двойным кликом мыши в окне Solution Explorer.
Файл App.Config это обычный XML файл, внутри которого по умолчанию содержится строка декларации и один корневой элемент configuration. Сам же файл конфигурации, опять же по умолчанию, хранится в папке текущего проекта.
Если вы не знаете, что такое XML и как с ним работать, то прочитайте статью: Введение в язык XML, в которой вкратце изложены все основные моменты.
Создание и добавление элемента connectionStrings
Создадим новый элемент connectionStrings. Для этого сначала введите знак меньше ().
Внутри созданного элемента создадим ещё один элемент с именем add
Для данного элемента добавим несколько атрибутов. Чтобы добавить атрибут нажмите на клавишу пробел после слова add, появится меню авто подстановки.
Выберите атрибут name и нажмите на клавишу Enter
Внутри двойных кавычек укажите любое имя, например MysqlConStr.
Затем добавьте следующий атрибут 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;
Видео
Читайте также:
А у меня в этой строке выкидывает какое то исключение. Я пока только обучаюсь и не особо могу понять, что к чему.
Что то ругается именно на ConnectionString в кавычках.
Предупреждение типа NullReferenceException was unhandled
Мало информации… трудно сказать в чём именно проблема.
conString.ConnectionString — это свойство, которое содержит значение connectionString в xml файле App.config
Если выдаёт null, то возможно допущена описка или неверно указано имя элемента в xml файле, либо что-то с его атрибутами.
Еще есть одна особенность. При создании файла конфига в окне создания пишу название файла например MyConnect.config а создается их 2. Первый с названием App.config. Я кстати который второй создался удалил сразу. Может быть в этом причина и зачем тогда студия создает второй?
Кстати компиляция и запуск приложения проходят нормально. Но при нажатии на кнопку, перебрасывает в студию и подсвечивает выше описанную строку с выделением на onnectionString.
Правильность написания уже несколько раз перепроверил, даже делал копипаст вашего кода. Сейчас с нуля еще раз попробую все пересоздать.
Ах да. Пользуюсь Visual Studio 2013 community
Можете полное описание ошибки добавить?
Вы создаёте один файл (MyConnect.config), второй (App.config) создаётся автоматически VS при создании нового проекта. Поэтому в VS 2012 и выше часть с добавлением конфиг. файла можно пропустить, так как он уже добавлен по умолчанию.
Ошибка возникает здесь:
conString равно null, потому что (по умолчанию) VS ищет файл App.Config, а Вы его удаляете и добавляете свой файл (MyConnect.config).
Решение: так как используется VS2013, то создавать файл MyConnect.config не нужно, потому что App.Config уже добавлен студией, а нужно просто открыть данный файл (App.Config) и добавить в него строки подключения:
Спасибо огромное за решение. Просто тут же переименовал файл на имя App.config и все заработало. Интересно а как тогда добавлять файл со своим именем?
Например, с помощью <appSettings>, который добавляется в конфигурационный файл.