28 January 2013

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

.NETSQLC#
Tutorial

Введение


Довольно часто у программиста, работающим с реляционной базой данных, возникает проблема как сделать настройку подключения удобной для конечного пользователя. Кто-то хранит строку подключения непосредственно в 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).
Tags:connection dialogc#.netsql
Hubs: .NET SQL C#
+6
26.1k 50
Comments 6
Popular right now