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

  • 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).
  • +6
  • 25.4k
  • 6
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 6

    +2
    Пожалуй, Microsoft давно пора расширить набор стандартных диалогов решениями и для таких случаев.
        +1
        Спасибо, может пригодиться. Попробовал сделать тестовую программу аналогичную вашей.
        Пару дополнений:
        1. Собирается под .Net 3.5 (Full)
        2. Можно собрать из исходников под .Net 4.0 Client Profile, если закомментировать всё, что относится к Oracle (если известно заранее, что Oracle не понадобится)
        3. Можно устанавливать через NuGet nuget.org/packages/DataConnectionDialog
          0
          Спасибо за дополнения
          0
          можно просто создать пустой файл с расширением .udl и запустить стандартными средствами windows
            0
            ах да, потом можно либо читать строку соединения из этого файла, либо ссылаться в connection string следующим образом

            File Name=c:\myDataLinkFile.udl;

          Only users with full accounts can post comments. Log in, please.