Связываем C# с MySQL
Приветствую! Хочу расписать поподробнее тему подключения MySQL к вашему коду на C#.
1. поставить готовый веб сервер с настроенной субд
2. поставить с нуля
Второй способ требует больше телодвижений и опыта и используется обычно в продакшане(при выходе продукта на рынок).
Поэтому, поставим готовый веб сервер. Главное для нас — наличие MySQL. Для Windows можно использовать OpenServer(достаточно будет базовой редакции). Как установить и настроить можно прочесть тут
Достаточно будет запустить выбранный веб-сервер и бд готова к использованию.
После закачки, устанавливаем.
Создайте новый проект в вашей IDE(я использую Visual Studio) любого типа(для проверки работоспособности подойдет консольное приложение).
Теперь нужно добавить ссылку на библиотеку. Распишу подробнее:
1. В окне «Solution Explorer» ПКМ по ссылкам и выбираем «добавить ссылку»

2. В новой окне нужно снизу найти кнопку "Browse..." и надать на нее, чтобы выпал диалог выбора файла.

3. Нам нужно выбрать файл MySql.Data.dll(у меня путь до него c:\programm files(x86)\MySQL\MySQL Connector Net 6.2\Assemblies\MySql.Data.dll)
4. Теперь, чтобы использовать MySQL в вашем коде, нужно добавить пространство имен в начале файла:
*** — означает используемую вами версию MySQL. Можно открыть настройки OpenServer и посмотреть, какая версия у вас выбрана.
Если на консоли только два сообщения «Подключаемся к MySQL...» и «Соединение закрыто. Готово!», то все хорошо, связь есть.
Рассмотрим один из примеров
1. Первым делом, подключаемся к бд, создам экземпляр класса MySqlConnection со строкой параметром и открыв соединение conn.Open()
2. Создаем SQL запрос и на его основе создаем команду MySqlCommand cmd = new MySqlCommand(sql, conn);
3. Далее важный момент. Есть три типа вызова(или исполнения) команды:
4. Считываем данные
Тут по-разному будет работать логика, но для перебора набора данных можно использовать метод rdr.Read(). далее, в внутри цикла, мы обращаемся по индексу к нужному полю. Порядок полей мы писали в запросе SELECT.
5. Освобождаем объект для чтения rdr.Close()
6. Закрываем соединение с бд conn.Close()
В офф документации есть пример работы с ExecuteNonQuery и ExecuteScalar. Разница только в чтении результата.
1 Установка MySQL
Для начала нужно установить саму субд. Есть несколько вариантов:1. поставить готовый веб сервер с настроенной субд
2. поставить с нуля
Второй способ требует больше телодвижений и опыта и используется обычно в продакшане(при выходе продукта на рынок).
Поэтому, поставим готовый веб сервер. Главное для нас — наличие MySQL. Для Windows можно использовать OpenServer(достаточно будет базовой редакции). Как установить и настроить можно прочесть тут
Достаточно будет запустить выбранный веб-сервер и бд готова к использованию.
2 Устанавливаем драйвер и библиотеки
Чтобы наше приложение могло подключаться и общаться с MySQL нужно установить MySQL .Net Connector. Переходим по ссылке, в «Select Platform:» выбираем «Windows» и жмем Download. На следующей странице нажмите "No thanks, just start my download.".После закачки, устанавливаем.
3 Подключаем к проекту библиотеки
И так, последний шаг перед началом плавания — подключение библиотеки к проекту.Создайте новый проект в вашей IDE(я использую Visual Studio) любого типа(для проверки работоспособности подойдет консольное приложение).
Теперь нужно добавить ссылку на библиотеку. Распишу подробнее:
1. В окне «Solution Explorer» ПКМ по ссылкам и выбираем «добавить ссылку»

2. В новой окне нужно снизу найти кнопку "Browse..." и надать на нее, чтобы выпал диалог выбора файла.

3. Нам нужно выбрать файл MySql.Data.dll(у меня путь до него c:\programm files(x86)\MySQL\MySQL Connector Net 6.2\Assemblies\MySql.Data.dll)
4. Теперь, чтобы использовать MySQL в вашем коде, нужно добавить пространство имен в начале файла:
using MySql.Data;
using MySql.Data.MySqlClient;
4 Создаем бд в MySQL
Вам нужно создать вашу бд в MySQL. В данной статье я опущу эту тему, но вы можете прочесть как можно создать бд с помощью командной строки mysql(он находится в папке с OpenServer/modules/database/mysql***/bin/) или phpmyadmin(встроен в OpenServer).*** — означает используемую вами версию MySQL. Можно открыть настройки OpenServer и посмотреть, какая версия у вас выбрана.
5 Подключаемся к MySQL
Отлично! Теперь давайте проверим то, что мы можем достучаться до нашей базы. И, конечно же, MySQL должен быть запущен(т е open server:))using System;
using System.Data;
using MySql.Data;//подключаем пространства имен
using MySql.Data.MySqlClient;//подключаем пространства имен
public class Lesson
{
public static void Main()
{
//измените имя бд на ваше, а также имя пользователя и пароль если нужно
string connStr = "server=localhost;user=john;database=mydatabase;port=3306;password=pass;";
var conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Подключаемся к MySQL...");
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Соединение закрыто. Готово!");
}
}
Если на консоли только два сообщения «Подключаемся к MySQL...» и «Соединение закрыто. Готово!», то все хорошо, связь есть.
6 Запросы
Далее, все что от вас требуется, это писать запросы. Ссылка на офф документациюРассмотрим один из примеров
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******;";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "SELECT Name, HeadOfState FROM Country WHERE Continent='Oceania'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr[0]+" -- "+rdr[1]);
}
rdr.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
1. Первым делом, подключаемся к бд, создам экземпляр класса MySqlConnection со строкой параметром и открыв соединение conn.Open()
2. Создаем SQL запрос и на его основе создаем команду MySqlCommand cmd = new MySqlCommand(sql, conn);
3. Далее важный момент. Есть три типа вызова(или исполнения) команды:
- ExecuteReader — используется для выборки набора данных.
- ExecuteNonQuery — использется для вставки и удаления данных.
- ExecuteScalar — используется для возвращения одиночной переменной(например, кол-во строк в таблице).
4. Считываем данные
while (rdr.Read())
{
Console.WriteLine(rdr[0]+" -- "+rdr[1]);
}
Тут по-разному будет работать логика, но для перебора набора данных можно использовать метод rdr.Read(). далее, в внутри цикла, мы обращаемся по индексу к нужному полю. Порядок полей мы писали в запросе SELECT.
5. Освобождаем объект для чтения rdr.Close()
6. Закрываем соединение с бд conn.Close()
В офф документации есть пример работы с ExecuteNonQuery и ExecuteScalar. Разница только в чтении результата.
0 комментариев