Введение
Довольно часто у программиста, работающим с реляционной базой данных, возникает проблема как сделать настройку подключения удобной для конечного пользователя. Кто-то хранит строку подключения непосредственно в NameApp.exe.config, это конечно неудобно, так как для того, чтобы изменить подключение, придется руками править файл. Большинство разработчиков пишут собственные классы и создают формы для редактирования строки подключения непосредственно в приложении. Это неплохой путь, если ты уже потратил на это свое время, но если ты начинаешь с нуля, то навряд ли захочется тратить несколько часов на создание диалогового окна подключения. Это как раз таки был мой случай.
Я работаю в VS2010 и мне нравится окно подключения студии, оно выглядит так (далее речь пойдет про Data Provider SQL Server):
Почему бы не использовать эту форму в своих приложениях?
Основным достоинством данной диалоговой формы является то, что имеется возможность выбрать доступный по сети SQL Server и базу данных, которая соответствует серверу.
Приступаем
Немного поискав, оказывается, что нас интересует Microsoft Data Connection Dialog (кто бы мог подумать?). Отлично, тратим еще пять минут и в архивах msdn находим исходники и документацию на проект. На этом можно было бы и закончить статью, потому что в документации все очень хорошо и доступно описано, но давайте продолжим.
Подключаем
Создаем новый проект, целевой платформой указываем .NET Framework 4.0 (Client Profie не подойдет!), на форму кидаем кнопку и textbox.
Далее добавляем в наш проект два файла DataConnectionConfiguration.cs и IDataConnectionConfiguration.cs из папки ...ConnectionDialogSample проекта с msdn. В первом — класс, реализующий список поставщиков данных и сохранение выбранного (сохраняет в xml), второй — соответственно интерфейс класса. Также необходимо две библиотеки: Microsoft.Data.ConnectionUI и Microsoft.Data.ConnectionUI.Dialog, взять их можно из папки ...ConnectionDialogConnectionDialogUIbinDebug(Release), предварительно построив проект. Вот, что должно получиться:
Используем
Теперь переходим к коду. Для того, чтобы воспользоваться диалоговым окном, необходимо инициализировать класс 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'е видим строку подключения к БД.
Заключение
Единственный минус, заключается в том, что вы не увидите в диалоговом окне великого и могучего. Для этого придется руками выполнять локализацию форм и файла Strings.resx в проекте ConnectionUIDialog. Локализованный мною проект вы можете взять здесь (проект VS2010 SP1).
P.S.:
Если компилятор будет ругаться на некоторые строки файла DataConnectionConfiguration.cs, закомментируйте их.
Автор: ScorpoNya