Форум программистов, компьютерный форум, киберфорум
motokraft
Войти
Регистрация
Восстановить пароль
Освоение языка программирования C#. Простые действия для создания простых программы...
Рейтинг: 5.00. Голосов: 1.

Работа с Базой Данных MYSQL :: Создание и Подключение Базы Данных. Создание Таблицы. Чтение Данных из таблиц...

Запись от motokraft размещена 10.01.2014 в 14:22
Обновил(-а) motokraft 06.05.2014 в 18:56

[B][I]Введение.[/I][/B]
Иногда бывает необходимым связать между собой эти, казалось бы, разные во всем технологии: например, для написания оффлайнового клиента для CMS, работающей на MySQL, создания локальной базы данных/приложения, использующего ее без ограничений производительности, вносимых, например, бесплатной версией Microsoft SQL. О том, как подружить между собой MySQL и .NET, я расскажу вам сегодня.
[B][I]Софт.[/I][/B]
[I]Для работы нам будет необходим следующий софт:
- MS Visual Studio .NET (я использовал 2005 студию и .NET 2.0, соответственно)
[url]http://msdn.microsoft.com/vstudio/[/url]
- MySQL (у меня стоит 5.0.45)
[url]http://dev.mysql.com/downloads/mysql/5.0.html#win32[/url]
- MySQL .NET Connector (у меня стоит 5.1.5, сейчас разработчик рекомендует ветку 5.2)
[url]http://dev.mysql.com/downloads/connector/net/[/url][/I]

[I]Также я использовал программу EMS SQL Manager 2007 for MySQL для упрощения работы с MySQL – есть бесплатные версии Freeware.
[url]http://sqlmanager.net/en/products/mysql/manager/download[/url]
Хотя ее, конечно, можно целиком заменить на MySQL Command Line Client :)
В статье будут приведены примеры кода на родном языке .NET – C#.[/I]
[B][I]Сборка.[/I][/B]
Теперь нам это все дело нужно собрать вместе. Это достаточно подробно расписано на сайте MySQL - [url]http://dev.mysql.com/doc/refman/5.1/en/connector-net.html[/url] - Ставим студию, MySQL, после чего ставим коннектор.
Теперь нужно создать проект, который сможет использовать классы MySQL Connector для работы с БД. Запускаем студию, создаем новый проект – Windows.Forms, язык C#. После этого, добавляем Reference на компонент Mysql.Data (кликаем правой кнопкой по References (у меня – справа) -> Add reference). Все, теперь нам доступно пространство имен Mysql.Data. Из него мы будем использовать MySql.Data.MySqlClient – добавляем соотв. директиву using.
[B][I]Работа с данными.[/I][/B]
Создадим простенькую базу данных с одной таблицой. В примере будет простая таблица автомобилей – идентификатор, модель, привод, расположение руля, коробка передач. Можно сделать это в вышеприведенном продукте компании EMS, можно руками, а мы же сделаем это с помощью нашей программы.
[B][U]Сначала нужно соединиться с сервером базы данных:[/U][/B]
[CSHARP]// данные соединения
string MySQL_host = "localhost";
string MySQL_port = "3306";
string MySQL_uid = "root";
string MySQL_pw = "nopassword";

MySqlConnection Connection = new MySqlConnection("Data Source=" + MySQL_host + ";Port=" + MySQL_port + ";User Id=" + MySQL_uid + ";Password=" + MySQL_pw + ";"); // Создаем соединение. Формат строки соединения подробно описан в прилагающейся документации.
MySqlCommand Query = new MySqlCommand(); // С помощью этого объекта выполняются запросы к БД
Query.Connection = Connection; // Присвоим объекту только что созданное соединение
try
{
Console.WriteLine("Соединяюсь с сервером базы данных...");
Connection.Open();// Соединяемся
}
catch (MySqlException SSDB_Exception)
{
// Ошибка - выходим
Console.WriteLine("Проверьте настройки соединения, не могу соединиться с базой данных!\nОшибка: " + SSDB_Exception.Message);
return;
}
Console.WriteLine("OK");[/CSHARP]
[I][B]Теперь нам нужно создать новую базу данных и таблицу в ней.
Создаем базу:[/B][/I]
[CSHARP]string MySQL_dbname = "mctestdb";
try
{
Query.CommandText = "CREATE DATABASE " + MySQL_dbname + ";";
Console.WriteLine("Создание базы данных...");
Query.ExecuteNonQuery();// Этот вызов отправляет запрос, не требующий чтения данных на выполнение
Query.CommandText = "USE " + MySQL_dbname + ";";
Query.ExecuteNonQuery();
}
catch (MySqlException SSDB_Exception)
{
Console.WriteLine("Ошибка при создании базы данных " + MySQL_dbname + ":\n" + SSDB_Exception.Message);
return;
}
Console.WriteLine("OK");[/CSHARP]
[B][I]Создаем таблицу:[/I][/B]
[CSHARP]string MySQL_tbname = "dm_autos";
try
{
Console.WriteLine("Создание таблицы " + MySQL_tbname + "...");
Query.CommandText = "CREATE TABLE `" + MySQL_tbname + "` ( `id` mediumint(9) unsigned NOT NULL auto_increment, `model` tinytext NOT NULL, `drive` tinytext NOT NULL, `rudder` tinytext NOT NULL, `gearbox` tinytext NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM;";
Query.ExecuteNonQuery();
}
catch (MySqlException SSDB_Exception)
{
Console.WriteLine("Ошибка при создании таблицы " + MySQL_tbname + ":\n" + SSDB_Exception.Message);
return;
}
Console.WriteLine("OK");[/CSHARP]
[B][I]Итак, база с одной таблицей создана, добавим в нее несколько тестовых значений:[/I][/B]
[CSHARP]Console.WriteLine("\nДобавление данных...");
string[] models = { "Opel Astra", "Volkswagen Golf", "Honda Civic", "Toyota Corolla" };
string[] drives = { "передний", "передний", "передний", "задний" };
string[] rudders = { "левый", "левый", "левый", "правый" };
string[] gearboxes = { "автомат", "механика", "механика", "автомат" };
int count = models.Length;
for(int i=0; i<count; i++)
{
Console.WriteLine("- " + models[i]);
Query.CommandText = "INSERT INTO " + MySQL_tbname + " VALUES(NULL, '" + models[i] + "','" + drives[i] + "','" + rudders[i] + "','" + gearboxes[i] + "');";
Query.ExecuteNonQuery();
}
Console.WriteLine("Данные добавлены!");[/CSHARP]
[B][I]Прочитаем эти данные:[/I][/B]
[CSHARP]Console.WriteLine("\nЧтение данных...\nID - Модель авто - Привод - Руль - Коробка передач");
Query.CommandText = "SELECT * FROM " + MySQL_tbname + ";";
MySqlDataReader MyReader = Query.ExecuteReader();// Запрос, подразумевающий чтение данных из таблиц.
while (MyReader.Read())// Читаем
{
// Каждое значение вытягиваем с помощью MySqlDataReader.GetValue(<номер значения в выборке>)
Console.WriteLine("{0} - {1} - {2} - {3} - {4}", MyReader.GetValue(0), MyReader.GetValue(1), MyReader.GetValue(2), MyReader.GetValue(3), MyReader.GetValue(4));
}

Выгружаем ресурсы, закрываем соединение:
MyReader.Close();
Query.Dispose();
Connection.Close();[/CSHARP]
[I]Как видим, совместная работа MySQL и технологий .NET не только возможна, но и достаточно удобна.
Документация по MySQL Connector’у и доступным классам компонента после установки будет в <папке установки коннектора>\Documentation
Также в аттаче есть вышенаписанная программа и софтина Simple Shop Database, которую я писал на заказ для ресторана с доставкой.[/I]
Размещено в Без категории
Показов 2966 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.