- PVSM.RU - https://www.pvsm.ru -

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

Введение

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

image

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

Приступаем

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

Подключаем

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

image

Далее добавляем в наш проект два файла DataConnectionConfiguration.cs и IDataConnectionConfiguration.cs из папки ...ConnectionDialogSample проекта с msdn. В первом — класс, реализующий список поставщиков данных и сохранение выбранного (сохраняет в xml), второй — соответственно интерфейс класса. Также необходимо две библиотеки: Microsoft.Data.ConnectionUI и Microsoft.Data.ConnectionUI.Dialog, взять их можно из папки ...ConnectionDialogConnectionDialogUIbinDebug(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. Локализованный мною проект вы можете взять здесь [2] (проект VS2010 SP1).

P.S.:

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

Автор: ScorpoNya

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/net/25830

Ссылки в тексте:

[1] исходники и документацию: http://archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId=3863

[2] здесь: http://rghost.ru/43364913

[3] Источник: http://habrahabr.ru/post/167067/