Введение
Довольно часто у программиста, работающим с реляционной базой данных, возникает проблема как сделать настройку подключения удобной для конечного пользователя. Кто-то хранит строку подключения непосредственно в NameApp.exe.config, это конечно неудобно, так как для того, чтобы изменить подключение, придется руками править файл. Большинство разработчиков пишут собственные классы и создают формы для редактирования строки подключения непосредственно в приложении. Это неплохой путь, если ты уже потратил на это свое время, но если ты начинаешь с нуля, то навряд ли захочется тратить несколько часов на создание диалогового окна подключения.
Я работаю в VS2010 и мне нравится окно подключения студии, оно выглядит так (далее речь пойдет про Data Provider SQL Server):
Почему бы не использовать эту форму в своих приложениях?
Основным достоинством данной диалоговой формы является то, что имеется возможность выбрать доступный по сети SQL Server и базу данных, которая соответствует серверу.
Приступаем
Немного поискав, оказывается, что нас интересует Microsoft Data Connection Dialog
Подключаем
Создаем новый проект, целевой платформой указываем .NET Framework 4.0 (Client Profie не подойдет!), на форму кидаем кнопку и textbox.
Далее добавляем в наш проект два файла DataConnectionConfiguration.cs и IDataConnectionConfiguration.cs из папки ...ConnectionDialog\Sample\ проекта с msdn. В первом — класс, реализующий список поставщиков данных и сохранение выбранного (сохраняет в xml), второй — соответственно интерфейс класса. Также необходимо две библиотеки: Microsoft.Data.ConnectionUI и Microsoft.Data.ConnectionUI.Dialog, взять их можно из папки ...ConnectionDialog\ConnectionDialogUI\bin\Debug(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).