Связываем C# с MySQL

Приветствую! Хочу расписать поподробнее тему подключения MySQL к вашему коду на C#.

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 — используется для возвращения одиночной переменной(например, кол-во строк в таблице).
Т.к. запрос из примера возвращает набор данных, то вы вызываем метод cmd.ExecuteReader().
4. Считываем данные
while (rdr.Read())
            {
                Console.WriteLine(rdr[0]+" -- "+rdr[1]);
            }

Тут по-разному будет работать логика, но для перебора набора данных можно использовать метод rdr.Read(). далее, в внутри цикла, мы обращаемся по индексу к нужному полю. Порядок полей мы писали в запросе SELECT.
5. Освобождаем объект для чтения rdr.Close()
6. Закрываем соединение с бд conn.Close()

В офф документации есть пример работы с ExecuteNonQuery и ExecuteScalar. Разница только в чтении результата.

Итог
Пожалуй, это все, что следует знать на первых порах. Если будут вопросы, пишите в комменты. Мир Вам!

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.