Работа c БД через SQL запросы с помощью C# - Студенческий научный форум

XIV Международная студенческая научная конференция Студенческий научный форум - 2022

Работа c БД через SQL запросы с помощью C#

Тарасов А.Ю. 1, Чернышов К.А. 1
1ИТ (филиал) ДГТУ в г.Волгодонск
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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).

Просмотров работы: 31