Когда я начал свое знакомство с технологией ADO.NET меня сразу заинтересовал вопрос: «Как можно подключиться к MySQL, используя технологию ADO.NET». Я начал искать решения. Сейчас, когда я реализовал у себя на компьютере все это, хочу с вами поделиться своим опытом и навыками. Давайте для начала разберем, что нам понадобится для реализации этой затеи.
Надеюсь, что у вас уже установлен сервер баз данных MySQL и программа Visual Studio. Если нет, тогда сделайте установку до того, как приступите к работе. Все готово. Visual Studio установлена, сервер баз данных MySQL установлен. Первым делом нам понадобится dll библиотека MySQL, которая будет помогать работать с ADO.NET в среде .NET Framework. Скачать библиотеку можно на официальном сайте MySQL по адресу: dev.mysql.com.
Для скачивания на сайте доступны два варианта: первый — установщик, второй — архив, в примере будет рассматриваться первый вариант. И так, Скачали? Установили? Прекрасно, идем дальше, дальше нам нужно обратиться к папке, в которую мы установили dll библиотеку MySQL, у меня путь к библиотеке выглядит так — C:\Program Files\MySQL\MySQL Connector Net 6.4.4\Assemblies\v2.0 в этой папке находим и копируем файл MySql.Date.dll в буфер.
Создаем консольное приложение в Visual Studio через Файл -> Создать -> Проект (File -> New -> Project) или Ctrl + Shift + N. Выбираем язык Visual C# консольное приложение нажимает ОК. Обращаемся к папке проекта где лежать все файлы, только что созданного консольного приложения {название проекта}/bin/Debug/ копируем суда файл MySql.Date.dll. В обозревателе решения(solution Explorer) в меню «Ссылки(references)» необходимо «Добавить ссылку(add a link)».
В результате в обозревателе решения(solution Explorer) в меню «Ссылки(references)» появиться ссылка на dll библиотеку MySql.Data. Очень хорошо, теперь остается подключить эту самую библиотеку в наш проект это делается очень просто:
Половину работы мы уже сделали, остается написать программный код, который будет делать соединение с базой MySQL и выполнять запросы. Первое, что нам понадобиться — настройки соединения с базой данных:
Мы создали 5 строковых переменных в 4 из которых прописали настройки для соединения с базой данных — имя локального компьютера, имя база данных, имя пользователя и пароль пользователя все эти настройки присвоили строковой переменной Connect в ней храниться полное подключение к базе данных. Создаем объект MySqlConnection с именем mysql_connection и передаем ей строку для подключения Connect:
Объект MySqlConnection — соединение с базой данных. Следующим шагом мы создаем объект MySqlCommand с именем mysql_query используя текущее подключение создаем SQL запрос, который будет храниться в mysql_query. Объект MySqlCommand — выполняет SQL команд.
Дальше для подключение и соединения с базой данных нужно вызвать метод .Open():
Теперь, чтобы увидеть обработанный запрос нужно создать объект MySqlDataReader:
Для выполнения SQL запроса на консольное окно нам понадобится метод ExecuteReader(), Read(), GetString() и цикл while. Метод ExecuteReader() выполняет запрос и возвращает 0 и более строк результата. Метод Read() — переходит от одной строки к другой пока конец данных не будет достигнут. Метод GetString() извлекает конкретное значение, которое нужно вернуть.
В конце, когда выполнился запрос, обязательно нужно закрыть соединение с базой данных используя метод .Close():
В результате нам программа должна показать список пользователей, которые существуют в базе данных. В моем случае это один пользователь root у вас может быть их несколько. Для закрепления данной темы давайте реализуем функционал, который будет выводить нам небольшую информацию о пользователе, а именно — имя пользователя, пароль пользователя и имя локального подключения. Полный код программы и ссылку где можно скачать проект представлен ниже.
Скачать исходник проекта здесь.
- Сервер баз данных MySQL
- Visual Studio (В моем примере это Visual Studio 2010)
- Библиотека для работы с MySQL
Надеюсь, что у вас уже установлен сервер баз данных MySQL и программа Visual Studio. Если нет, тогда сделайте установку до того, как приступите к работе. Все готово. Visual Studio установлена, сервер баз данных MySQL установлен. Первым делом нам понадобится dll библиотека MySQL, которая будет помогать работать с ADO.NET в среде .NET Framework. Скачать библиотеку можно на официальном сайте MySQL по адресу: dev.mysql.com.
Для скачивания на сайте доступны два варианта: первый — установщик, второй — архив, в примере будет рассматриваться первый вариант. И так, Скачали? Установили? Прекрасно, идем дальше, дальше нам нужно обратиться к папке, в которую мы установили dll библиотеку MySQL, у меня путь к библиотеке выглядит так — C:\Program Files\MySQL\MySQL Connector Net 6.4.4\Assemblies\v2.0 в этой папке находим и копируем файл MySql.Date.dll в буфер.
Создаем консольное приложение в Visual Studio через Файл -> Создать -> Проект (File -> New -> Project) или Ctrl + Shift + N. Выбираем язык Visual C# консольное приложение нажимает ОК. Обращаемся к папке проекта где лежать все файлы, только что созданного консольного приложения {название проекта}/bin/Debug/ копируем суда файл MySql.Date.dll. В обозревателе решения(solution Explorer) в меню «Ссылки(references)» необходимо «Добавить ссылку(add a link)».
В результате в обозревателе решения(solution Explorer) в меню «Ссылки(references)» появиться ссылка на dll библиотеку MySql.Data. Очень хорошо, теперь остается подключить эту самую библиотеку в наш проект это делается очень просто:
// Используем пространство имен MySql.Date using MySql.Data.MySqlClient;
Половину работы мы уже сделали, остается написать программный код, который будет делать соединение с базой MySQL и выполнять запросы. Первое, что нам понадобиться — настройки соединения с базой данных:
string host = "localhost"; // Имя хоста string database = "mysql"; // Имя базы данных string user = "root"; // Имя пользователя string password = "password"; // Пароль пользователя string Connect = "Database=" + database + ";Datasource=" + host + ";User=" + user + ";Password=" + password;
Мы создали 5 строковых переменных в 4 из которых прописали настройки для соединения с базой данных — имя локального компьютера, имя база данных, имя пользователя и пароль пользователя все эти настройки присвоили строковой переменной Connect в ней храниться полное подключение к базе данных. Создаем объект MySqlConnection с именем mysql_connection и передаем ей строку для подключения Connect:
MySqlConnection mysql_connection = new MySqlConnection(Connect);
Объект MySqlConnection — соединение с базой данных. Следующим шагом мы создаем объект MySqlCommand с именем mysql_query используя текущее подключение создаем SQL запрос, который будет храниться в mysql_query. Объект MySqlCommand — выполняет SQL команд.
MySqlCommand mysql_query = mysql_connection.CreateCommand(); mysql_query.CommandText = "SELECT user FROM user;";
Дальше для подключение и соединения с базой данных нужно вызвать метод .Open():
mysql_connection.Open();
Теперь, чтобы увидеть обработанный запрос нужно создать объект MySqlDataReader:
MySqlDataReader mysql_result;
Для выполнения SQL запроса на консольное окно нам понадобится метод ExecuteReader(), Read(), GetString() и цикл while. Метод ExecuteReader() выполняет запрос и возвращает 0 и более строк результата. Метод Read() — переходит от одной строки к другой пока конец данных не будет достигнут. Метод GetString() извлекает конкретное значение, которое нужно вернуть.
mysql_result = mysql_query.ExecuteReader(); while (mysql_result.Read()) { Console.WriteLine("{0}", mysql_result.GetString(0)); }
В конце, когда выполнился запрос, обязательно нужно закрыть соединение с базой данных используя метод .Close():
mysql_connection.Close();
В результате нам программа должна показать список пользователей, которые существуют в базе данных. В моем случае это один пользователь root у вас может быть их несколько. Для закрепления данной темы давайте реализуем функционал, который будет выводить нам небольшую информацию о пользователе, а именно — имя пользователя, пароль пользователя и имя локального подключения. Полный код программы и ссылку где можно скачать проект представлен ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; // Используем пространство имен MySql.Date using MySql.Data.MySqlClient; namespace MySQLConsole { class Program { static void Main(string[] args) { string host = "localhost"; // Имя локального компьютера string database = "mysql"; // Имя базы данных string user = "root"; // Имя пользователя string password = "password"; // Пароль пользователя string Connect = "Database=" + database + ";Datasource=" + host + ";User=" + user + ";Password=" + password; // Создаем соединение с базой данных MySqlConnection mysql_connection = new MySqlConnection(Connect); // Создание SQL команды MySqlCommand mysql_query = mysql_connection.CreateCommand(); mysql_query.CommandText = "SELECT user FROM user;"; try { mysql_connection.Open(); MySqlDataReader mysql_result; mysql_result = mysql_query.ExecuteReader(); while (mysql_result.Read()) { Console.WriteLine("{0}", mysql_result.GetString(0)); } mysql_connection.Close(); string command; do { command = Console.ReadLine(); if (command != "quit") { mysql_query = new MySqlCommand("SELECT host, user, password FROM user WHERE user =\"" + command + "\";", mysql_connection); mysql_connection.Open(); mysql_result = mysql_query.ExecuteReader(); if (mysql_result.Read()) { Console.WriteLine("\nИнформация о пользователе: {0}", command); Console.WriteLine("HOST: {0}", mysql_result.GetString(0)); Console.WriteLine("USER: {0}", mysql_result.GetString(1)); Console.WriteLine("PASSWORD: {0}", mysql_result.GetString(2)); } else { Console.WriteLine("Пользователя {0} в базе не существует!", command); } mysql_connection.Close(); } } while (command != "quit"); } catch { Console.WriteLine("Ошибка MySQL"); } } }
Скачать исходник проекта здесь.
