Введение
SQL или Structured Query Language (язык структурированных запросов) — язык программирования, предназначенный для управления данными в СУБД. Все современные СУБД поддерживают SQL.
На языке SQL выражаются все действия, которые можно провести с данными: от записи и чтения данных, до администрирования самого сервера СУБД. Для повседневной работы совсем не обязательно знать весь этот язык; достаточно ознакомиться лишь с основными понятиями синтаксиса и ключевыми словами. Кроме того, SQL очень простой язык по своей структуре, поэтому его освоение не составит большого труда.
Язык программирования С# был разработан корпорацией Microsoft, и является одним из самых популярных языков программирования. Он востребован на рынке труда во множестве стран. Этот язык применяют при создании софта для ПК, сложных веб-сервисов или мобильной разработке. Изначально данный язык программирования был создан для собственных нужд платформы Microsoft .NET, но постепенно стал очень популярным.
MAMP – это приложение для создание локального сервера на вашем компьютере. Даёт возможность получить доступ к дополнительному приложению phpMyAdmin.
PhpMyAdmin – это веб-приложение для администрирование баз данных.
Для создания SQL запросов на языке C# нам понадобится база данных SQL. Для создания базы данных нам понадобится локальный сервер. В своей проделанной работе мы использовали MAMP и использовали дополнительный web-интерфейс phpMyAdmin для создания базы данных.
Основная часть
Создаём базу данных:
1. В phpMyAdmin припомощикомандыCREATE DATABASE my_project создаёмБД.
2. Создаём таблицу и заполняем eё данными.
CREATE TABLE `films` (
`id` INT NOT NULL AUTO_INCREMENT,`name` varchar(60),`duration` int(10),`averageMark` float,`country` varchar(30),`genre` varchar(60),`regisseur` varchar(30),`budget` varchar(30),`languche` varchar(15),`releaseYear` year(4).
3. Добавляем поля в таблицу через команду
Пример с добавление двух полей:
INSERT INTO `films` (`id`, `name`, `duration`, `averageMark`, `country`, `genre`, `regisseur`, `budget`, `languche`, `releaseYear`) VALUES
(1, 'Гарри Поттер и философский камень', 113, 9.1, 'США, Великобритания', 'Ужасы', 'Крис Коламбус', '125000000', 'Русский\r\n', 2001);
После всех проделанных пунктов у нас должно получиться таблица с заполненными данными как показано на рис. 1.
Рис. 1. Таблица с заполненными данными
После создания БД надо написать C# код для подключения к базе данных, это будет отдельный класс под названием DB:
class DB {
MySqlConnection connection = new MySqlConnection("server=localhost;port=3306;username=root;password=root;database=course_project");
public void openConnection(){
if (connection.State == System.Data.ConnectionState.Closed)
connection.Open();}
public void closeConnection() {
if (connection.State == System.Data.ConnectionState.Open)
connection.Close(); }
public MySqlConnection getConnection(){
return connection;} }
После того, как мы подключились к базе данных, мы можем делать запросы к базе данных. Первый запрос, который мы сделаем это выведем дынные из базы данных в таблицу. Кодбудетвыгладитьтак:
public static DataTable readXml(){
DataTable dt = null;
try{
XDocument xDoc = XDocument.Load(@"C:\Users\Lesha\Desktop\ООП\Приложение\XMLFile1.xml");
dt = CreateTable();
DataRow newRow = null;
foreach (XElement elm in xDoc.Descendants("film")){
newRow = dt.NewRow();
if (elm.HasAttributes){
if (elm.Attribute("name") != null){
newRow["name"] = elm.Attribute("name").Value;}}
if (elm.Element("duration") != null){
newRow["duration"] = int.Parse(elm.Element("duration").Value);}
if (elm.Element("averageMark") != null){
newRow["averageMark"] = double.Parse(elm.Element("duration").Value);}
if (elm.Element("country") != null){
newRow["country"] = elm.Element("country").Value;}
if (elm.Element("genre") != null){
newRow["genre"] = elm.Element("genre").Value;}
if (elm.Element("regisseur") != null){
newRow["regisseur"] = elm.Element("regisseur").Value;}
if (elm.Element("budget") != null){
newRow["budget"] = int.Parse(elm.Element("budget").Value);}
if (elm.Element("languche") != null){
newRow["languche"] = elm.Element("languche").Value;}
if (elm.Element("releaseYear") != null){
newRow["releaseYear"] = int.Parse(elm.Element("releaseYear").Value);}
dt.Rows.Add(newRow);}}
catch (Exception ex){
MessageBox.Show(ex.Message);}
return dt;}
Результат работы кода показан на рис. 2.
Рис. 2. Результат зпроса к базе данных
Вторым запросом к базе данных будет поиск данных. Кодзапроса:
private void button1_Click(object sender, EventArgs e)
{
DB db = new DB();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand("SELECT * FROM `films` WHERE `name` = @uL", db.getConnection());
command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = textBox1.Text;
adapter.SelectCommand = command;
adapter.Fill(table);
if (table.Rows.Count > 0){
dataGridView1.DataSource = table;}else{
table.Clear();
MessageBox.Show("Фильмненайден");}}
Результат поиска показан на рис. 4.
Рис. 4. Удаление данных
Третьим запросом будет добавление в базу данных. Кодзапроса:
private void button2_Click(object sender, EventArgs e)
{
if(textBox1.Text == "Название" || textBox2.Text == "Продолжительность" || textBox3.Text == "Рейтинг" || textBox4.Text == "Страна" || textBox5.Text == "Жанр" || textBox6.Text == "Режиссёр" || textBox7.Text == "Бюджет" || textBox8.Text == "Язык" || textBox9.Text == "Датавыходавпрокат"){
MessageBox.Show("Вы ввели не все данные. \nОперация не выполнена");
return;}
DB db = new DB();
MySqlCommand command = new MySqlCommand("INSERT INTO films (name, duration, averageMark, country, genre, regisseur, budget, languche, releaseYear) VALUES(@name, @duration, @averageMark, @country, @genre, @regisseur, @budget, @languche, @releaseYear)", db.getConnection());
command.Parameters.Add("@name", MySqlDbType.VarChar).Value = textBox1.Text;
command.Parameters.Add("@duration", MySqlDbType.Int32).Value = textBox2.Text;
command.Parameters.Add("@averageMark", MySqlDbType.Float).Value = textBox3.Text;
db.openConnection();
if (command.ExecuteNonQuery() == 1){
MessageBox.Show("Фильм успешно добавлен в библиотеку.");
this.Hide();
Form1 form1 = new Form1();
form1.Show();}
else
MessageBox.Show("Фильмнедобавленвбиблиотеку.");
db.closeConnection();}
Добавление данных в базу данных рис. 5.
Рис. 5. Добавление
Результат выполнеия запрса рис. 6.
Рис. 6. Результат запроса
Четвёртым запросом будет на поиск по фильтру данных в базе данных. Кодзапроса:
public void button4_Click(object sender, EventArgs e){
if (treeView1.Nodes[0].Nodes[0].Checked == true){
DB db = new DB();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand("SELECT * FROM `films` WHERE `genre` = @uL", db.getConnection());
command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = treeView1.Nodes[0].Nodes[0].Text;
adapter.SelectCommand = command;
adapter.Fill(table);
dataGridView1.DataSource = table;}
if (treeView1.Nodes[0].Nodes[1].Checked == true){
DB db = new DB();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand("SELECT * FROM `films` WHERE `genre` = @uL", db.getConnection());
command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = treeView1.Nodes[0].Nodes[1].Text;
adapter.SelectCommand = command;
adapter.Fill(table);
dataGridView1.DataSource = table;}
Пример работы одного фильтра данных рис. 7.
Рис.7. Фильтр данных
ЗАКЛЮЧЕНИЕ
В проделанной работе мы разобрали основные запросы SQL при помощи языка С#. В процессе была разработана программа, которая позволяет с легкостью обрабатывать данные из базы данных.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Материал из Википедии — свободной энциклопедии.
Высокоуровневый язык программирования // Википедия. 2020.
URL: https://ru.wikipedia.org/wiki/sql
(дата обращения: 22.01.2022).
Мюллер Д. П. C# для чайников; БХВ-Петербург - М., 2021. 139c (дата обращения: 27. 01.2022).
Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 503 c. (дата обращения: 27. 01.2022).
Культин Никита Борисович Основы программирования в Microsoft Visual Studio 2019 БХВ-Петербург - М., 2011. - 384 c. (дата обращения: 27.11.2022).
Троелсен и Джепикс C# 7 и .NET Core. Кросс-платформенная разработка для профессионалов; БХВ-Петербург - М., 2019. - 352 c. (дата обращения: 27. 01.2022).
Джеффри Рихтер CLR via C# 7; Вильямс - М., 2020. - 694 c. (дата обращения: 27. 01.2022).
Дон Бокс, Крис Селлз Программирование на платформе .NET Полное руководство; Вильямс - М., 2021. - 291 c. (дата обращения: 27. 01.2022).