using System; using System.Data; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace _0303RogovaNeshina { public partial class MainForm : Form { string connStr = "Server=cfif31.ru;Port=3306;Database=ISPr25-21_NeshinaPV_0303;Uid=ISPr25-21_NeshinaPV;Pwd=ISPr25-21_NeshinaPV;"; public MainForm() { InitializeComponent(); this.Load += MainForm_Load; dataGridView1.AllowUserToAddRows = false; dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.MultiSelect = false; dataGridView1.ReadOnly = true; } private void MainForm_Load(object sender, EventArgs e) { try { using (MySqlConnection conn = new MySqlConnection(connStr)) { conn.Open(); string sql = @" SELECT b.idbooks, b.name AS book_name, a.name AS author_name, b.price FROM books b INNER JOIN author a ON b.author_id = a.idauthor ORDER BY b.idbooks"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataAdapter da = new MySqlDataAdapter(cmd); DataTable dt = new DataTable(); int count = da.Fill(dt); if (count == 0) { MessageBox.Show("В таблице нет данных!"); return; } dataGridView1.DataSource = dt; dataGridView1.Columns[0].Visible = false; // Скрыть ID dataGridView1.Columns[1].HeaderText = "Название книги"; dataGridView1.Columns[2].HeaderText = "Автор"; dataGridView1.Columns[3].HeaderText = "Цена (руб.)"; dataGridView1.Columns[3].DefaultCellStyle.Format = "N2"; dataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } } catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btAdd_Click(object sender, EventArgs e) { AddBooksForm add = new AddBooksForm(); if (add.ShowDialog() == DialogResult.OK) { MainForm_Load(sender, e); } } private void btEdit_Click(object sender, EventArgs e) { if (dataGridView1.CurrentRow == null) { MessageBox.Show("Выберите строку для редактирования!", "Внимание"); return; } int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value); EditBooksForm edit = new EditBooksForm(id); if (edit.ShowDialog() == DialogResult.OK) { MainForm_Load(sender, e); } } private void btDelete_Click_1(object sender, EventArgs e) { // 1. Проверка выделения if (dataGridView1.CurrentRow == null) { MessageBox.Show("Выберите книгу для удаления!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // 2. Подтверждение действия string bookName = dataGridView1.CurrentRow.Cells[1].Value.ToString(); DialogResult res = MessageBox.Show( $"Вы действительно хотите удалить книгу \"{bookName}\"?\nЭто действие нельзя отменить.", "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (res == DialogResult.Yes) { try { int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value); using (MySqlConnection conn = new MySqlConnection(connStr)) { conn.Open(); string sql = "DELETE FROM books WHERE idbooks = @id"; MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("@id", id); int rows = cmd.ExecuteNonQuery(); if (rows > 0) { MessageBox.Show($"Книга \"{bookName}\" успешно удалена!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); MainForm_Load(sender, e); // Обновить таблицу } else { MessageBox.Show("Ошибка: книга не найдена в базе.", "Ошибка"); } } } catch (Exception ex) { MessageBox.Show("Ошибка при удалении: " + ex.Message, "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } }