Работа с MySQL в C#
Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правильный выбор. Первое с чего бы хотелось начать это с настоятельной рекомендации: «Программируя под .NET всегда пользуйтесь MySQL .NET — Коннектором!». Можно конечно и через ADO подключаться к базе но это чревато тем что в будущем вам просто будет необходимо вносить изменения при переходе на Windows Vista и выше.
Маленькое отступление: MySQL очень удобно использовать при программировании для мобильных устройств на базе Windows. Стандартные библиотеки работают и на мобильном устройстве под .NET CF точно так-же как и на сервере или рабочей станции. (Имеются ввиду те случаи, когда необходимо обращение с мобильного компьютера к базе данных на сервере. На самом мобильном устройстве сервер MySQL установить нельзя.) И в дополнение. Крайне не советую использовать на мобильном устройстве SQL.CE для больших баз данных (свыше 50000 записей в таблице) при росте базы быстродействие сильно падает. На мой взгляд гораздо лучше продумать свою систему хранения данных. Но об этом в отдельной публикации.
Для работы с MySQL вам понадобится «MySQL Connector / NET».
Скачать его можно здесь http://dev.mysql.com/downloads/connector/net/5.2.html
Чтобы иметь возможность работать с базой, скачиваем и устанавливаем утилиту.
Далее открываем наш проект и подключаем MySQL Connector:
Project->Add references->.NET->MySQL.Data
После чего в Solution Explorer в ветка Reference должна появиться MySQL.Data.
Обязательно прописываем в проекте:
using MySql.Data.MySqlClient;
Создание подключения к базе данных:
string CommandText = "Наш SQL скрипт";
string Connect="Database=БАЗА;Data Source=ХОСТ;User Id=ПОЛЬЗОВАТЕЛЬ;Password=ПАРОЛЬ";
//Переменная Connect - это строка подключения в которой:
//БАЗА - Имя базы в MySQL
//ХОСТ - Имя или IP-адрес сервера (если локально то можно и localhost)
//ПОЛЬЗОВАТЕЛЬ - Имя пользователя MySQL
//ПАРОЛЬ - говорит само за себя - пароль пользователя БД MySQL
MySqlConnection myConnection = new MySqlConnection(Connect);
MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);
myConnection.Open(); //Устанавливаем соединение с базой данных.
//Что то делаем...
myConnection.Close(); //Обязательно закрываем соединение!
Пунктик "//Что делаем..." может отличаться в зависимости от того, делаем ли мы выборку или производим изменения в базе.
Случай первый делаем выборку:
Выборка может быть двух видов: когда запрос возвращает нам одно значение и когда запрос возвращает нам набор значений. Обрабатывать их соответственно можно по разному.
Если запрос нам возвращает одно значение (надо быть уверенным что запрос вернёт именно одно значение иначе будет ошибка).
string znachenie = MyCommand.ExecuteScalar().ToString();
Если запорс нам возвращает множество значений то так:
MySqlDataReader MyDataReader;
MyDataReader = myCommand.ExecuteReader();
while (MyDataReader.Read())
{
string result = MyDataReader.GetString(0); //Получаем строку
int id = MyDataReader.GetInt32(1); //Получаем целое число
}
MyDataReader.Close();
Случай второй, вносим изменения:
Для выполнения скрипта изменяющего данные используется:
MyCommand.ExecuteNonQuery();
Вот собственно и всё, с остальным не сложно разобраться самостоятельно.