Как удаленно подключиться к базе данных, размещенной на нашем хостинге?!
Сегодня мы попробуем создать небольшое приложение WindowsForms на языке C# и подключиться к нашей базе данных (БД) MySQL на удалённом сервере хостинга. Чтобы наше приложение могло подключаться удалённо, для начала нам нужно разрешить удалённый доступ по IP адресу.
Настройка доступа
- Для настройки подключения к MySQL извне необходимо зайти в Панель управления и перейти в раздел «Базы данных MySQL».
- Нажмите кнопку «Доступ по IP» → «Добавить IP» и укажите IP-адрес, с которым вы выходите в сеть. Узнать свой IP-адрес можно на сайте inet.from.sh
- Также в форме можно указывать IP-адреса с символом % в октетах. Например, для разграничения доступа с IP-адресов одной подсети:
192.168.1.%
Пример настройки доступа по IP-адресу в панели ISP manager:
Если всё настроено, то мы можем приступать к написанию нашего приложения.
Создадим наше приложение: «Файл» → «Создать» → «Проект» → «Приложение Windows Forms» и нажмём "ОК".
{reklama}
Для работы с MySQL нам необходимо подключить ссылку MySql.Data и в исходном коде добавить пространство имён MySql.Data.MySqlClient
- В обозревателе решений жмём правой кнопкой мыши в разделе «Ссылки» → «Добавить ссылку»
- В открывшемся окне переходим в раздел «.NET», находим и выделяем компонент «MySql.Data» и нажимаем "ОК"
- Далее в исходном коде нашей формы добавляем пространство имён
using MySql.Data.MySqlClient;
Небольшое отступление
При переустановки системы столкнулся с такой проблемой, как отсутствие MySql.Data. Проблема эта решилась после установки официального коннектора для работы с базами данных MySql на платформе .NET.
Переходим по ссылке и скачиваем наш коннектор.
Подготовительная часть завершена, теперь приступим к написанию нашего кода подключения.
Для проверки подключения нам необходимо добавить на нашу форму кнопочку. Переходим в конструктор нашей формы и из панели элементов перетаскиваем нашу кнопочку на форму
Двойной щелчёк мыши по созданной нами кнопке создаёт событие нажатия на кнопку и переводит нас в исходный код нашей формы.
Событие нашей кнопки:
private void button1_Click(object sender, EventArgs e)
{
}
Остальной код мы будем писать внутри скобок, но для начала рассмотрим несколько способов создания строк подключения.
Первый способ
Можно просто создать строковую переменную и указать в ней все данные для подключения, например:
string myConnectionString = "Database=DBNAME;Data Source=IPADRESS;User Id=DBUSER;Password=DBPASSWORD";
Где:
DBNAME - это имя базы данных Вашей MySql;
IPADRESS - IP адрес Вашей базы (обычно совпадает с IP адресом сайта);
DBUSER - Имя пользователя базы данных;
DBPASSWORD - Пароль пользователя БД.
Способ второй
MySqlConnectionStringBuilder mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "192.168.0.1"; // IP адоес БД
mysqlCSB.Database = "test_db"; // Имя БД
mysqlCSB.UserID = "root"; // Имя пользователя БД
mysqlCSB.Password = "rootpass"; // Пароль пользователя БД
mysqlCSB.CharacterSet = "cp1251"; // Кодировка Базы Данных
Какой способ подключения использовать Вам решайте сами, а мы для примера воспользуемся первым способом.
Не буду дальше расписывать весь код, а просто приведу пример подключения к БД
private void button1_Click(object sender, EventArgs e)
{
string myConnectionString = "Database=db_name;Data Source=192.168.0.1;User Id=root;Password=rootpass";
MySqlConnection myConnection = new MySqlConnection(myConnectionString);
try
{
myConnection.Open(); // Открываем соединение
// --- код запроса и т.п. --- //
MessageBox.Show("Подключение прошло успешно!");
myConnection.Close(); // Закрываем соединение
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка");
}
}
В предоставленном ниже проекте реализованы оба способа подключения и небольшой пример запроса к БД, и вывод данных в DataGridView, который также можно найти в "Панеле элементов" и перетащить его на форму.
Исходный код:
P.S. - файл MySql.Data.dll также можно скачать с нашего сайта и подключить его непосредственно к приложению, чтобы в дальнейшем не возникало проблем с отсутствием нужных библиотек.
Скачать библиотеку: