Диалоговое окно подключения к базе данных

от автора

Введение

Довольно часто у программиста, работающим с реляционной базой данных, возникает проблема как сделать настройку подключения удобной для конечного пользователя. Кто-то хранит строку подключения непосредственно в NameApp.exe.config, это конечно неудобно, так как для того, чтобы изменить подключение, придется руками править файл. Большинство разработчиков пишут собственные классы и создают формы для редактирования строки подключения непосредственно в приложении. Это неплохой путь, если ты уже потратил на это свое время, но если ты начинаешь с нуля, то навряд ли захочется тратить несколько часов на создание диалогового окна подключения. Это как раз таки был мой случай.
Я работаю в VS2010 и мне нравится окно подключения студии, оно выглядит так (далее речь пойдет про Data Provider SQL Server):

image

Почему бы не использовать эту форму в своих приложениях?
Основным достоинством данной диалоговой формы является то, что имеется возможность выбрать доступный по сети SQL Server и базу данных, которая соответствует серверу.

Приступаем

Немного поискав, оказывается, что нас интересует Microsoft Data Connection Dialog (кто бы мог подумать?). Отлично, тратим еще пять минут и в архивах msdn находим исходники и документацию на проект. На этом можно было бы и закончить статью, потому что в документации все очень хорошо и доступно описано, но давайте продолжим.

Подключаем

Создаем новый проект, целевой платформой указываем .NET Framework 4.0 (Client Profie не подойдет!), на форму кидаем кнопку и textbox.

image

Далее добавляем в наш проект два файла DataConnectionConfiguration.cs и IDataConnectionConfiguration.cs из папки …ConnectionDialog\Sample\ проекта с msdn. В первом — класс, реализующий список поставщиков данных и сохранение выбранного (сохраняет в xml), второй — соответственно интерфейс класса. Также необходимо две библиотеки: Microsoft.Data.ConnectionUI и Microsoft.Data.ConnectionUI.Dialog, взять их можно из папки …ConnectionDialog\ConnectionDialogUI\bin\Debug(Release)\, предварительно построив проект. Вот, что должно получиться:

image

Используем

Теперь переходим к коду. Для того, чтобы воспользоваться диалоговым окном, необходимо инициализировать класс DataConnectionDialog и получить сроку подключения к БД из свойства ConnectionString.
Напишем простую функцию, которая вызывает диалоговое окно и по нажатию кнопки OK возвращает строку подключения:

private string GetConnectionString()         {             string connectionString = null;             DataConnectionDialog dcd = new DataConnectionDialog();              DataConnectionConfiguration dcs = new DataConnectionConfiguration(null);             dcs.LoadConfiguration(dcd);             if (DataConnectionDialog.Show(dcd) == DialogResult.OK)                 connectionString = dcd.ConnectionString;             dcs.SaveConfiguration(dcd);             return connectionString;         } 

Теперь использование этой функции в обработчике кнопки button1.

private void button1_Click(object sender, EventArgs e)         {             textBox1.Text = GetConnectionString();                     }

Запускаем проект, нажимаем на кнопку, выбираем поставщика, указываем сервер и базу данных, нажимаем ОК и в textbox’е видим строку подключения к БД.

image

Заключение

Единственный минус, заключается в том, что вы не увидите в диалоговом окне великого и могучего. Для этого придется руками выполнять локализацию форм и файла Strings.resx в проекте ConnectionUIDialog. Локализованный мною проект вы можете взять здесь (проект VS2010 SP1).

P.S.:

Если компилятор будет ругаться на некоторые строки файла DataConnectionConfiguration.cs, закомментируйте их.

ссылка на оригинал статьи http://habrahabr.ru/post/167067/


Комментарии

Добавить комментарий

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