Щоб видалити записи з таблиці Книги з вказаним роком видання, можна використати оператор DELETE в SQL. У цьому прикладі ми додамо кнопку для видалення записів, текстове поле для введення року видання та обробник події для виконання видалення записів з бази даних Access.
Розмітка форми (попередньо копіюємо попередній проект з 6_20_2)
Додайте на форму такі елементи керування:

DataSet та BindingSource. LoadBooks використовується для завантаження даних з таблиці Книги та заповнення DataSet. Потім дані прив'язуються до BindingSource, який пов'язаний з DataGridView.
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace SUBD
{
public partial class Form1 : Form
{
// Рядок підключення до бази даних Access
private string connectionString = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=[DataDirectory]\KHMTM.mdb";
private BindingSource bindingSource;
public Form1()
{
InitializeComponent();
bindingSource = new BindingSource();
}
private void Form1_Load(object sender, EventArgs e)
{
// Налаштування прив'язки даних для DataGridView
dataGridView1.DataSource = bindingSource;
// Завантаження даних при старті форми
LoadBooks();
}
private void LoadBooks()
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
connection.Open();
// SQL-запит для отримання даних
string query = "SELECT * FROM Книги";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
// Оновлення даних через BindingSource
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
bindingSource.DataSource = dataTable;
}
catch (Exception ex)
{
MessageBox.Show($"Помилка завантаження даних: {ex.Message}",
"Помилка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
}
}
buttonLoadData_Click викликається при натисканні кнопки "Відобразити дані таблиці". Він відображає всі записи таблиці в DataGridView.
private void buttonLoadData_Click(object sender, EventArgs e)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
// Відкриття з'єднання з базою даних
connection.Open();
// Створення адаптера даних для виконання SQL-запиту
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Книги", connection);
// Створення таблиці даних для зберігання результатів
DataTable dataTable = new DataTable();
// Заповнення таблиці даними з бази
adapter.Fill(dataTable);
// Прив'язка даних до DataGridView
dataGridView1.DataSource = dataTable;
}
catch (Exception ex)
{
// Обробка помилок з виведенням повідомлення
MessageBox.Show("Помилка завантаження даних: " + ex.Message,
"Помилка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void buttonExit_Click(object sender, EventArgs e)
{
// Закриття додатку
Application.Exit();
}private void buttonDeleteBooks_Click(object sender, EventArgs e)
{
// Перевірка коректності введеного року
if (!int.TryParse(textBoxYear.Text, out int year))
{
MessageBox.Show("Будь ласка, введіть коректний рік.",
"Помилка введення",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
return;
}
// Підтвердження видалення
DialogResult result = MessageBox.Show($"Ви впевнені, що хочете видалити всі книги {year} року?",
"Підтвердження видалення",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
// Виклик методу видалення книг
DeleteBooksByYear(year);
}
}
private void DeleteBooksByYear(int year)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
connection.Open();
// SQL-запит для видалення книг за вказаним роком
string query = "DELETE FROM Книги WHERE [Рік видання] = @Year";
using (OleDbCommand command = new OleDbCommand(query, connection))
{
// Додавання параметра для запобігання SQL-ін'єкціям
command.Parameters.AddWithValue("@Year", year);
// Виконання запиту та отримання кількості видалених записів
int rowsAffected = command.ExecuteNonQuery();
// Повідомлення про результат операції
MessageBox.Show($"Видалено {rowsAffected} книг {year} року.",
"Результат операції",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
// Оновлення відображення даних
LoadBooks();
}
}
catch (Exception ex)
{
MessageBox.Show($"Помилка при видаленні книг: {ex.Message}",
"Помилка бази даних",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void DeleteBooksByYear(int year)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
// Відкриття з'єднання з базою даних
connection.Open();
// SQL-запит для видалення книг за вказаним роком видання
string query = "DELETE FROM Книги WHERE [Год издания] = @Year";
using (OleDbCommand command = new OleDbCommand(query, connection))
{
// Додавання параметра для запобігання SQL-ін'єкціям
command.Parameters.AddWithValue("@Year", year);
// Виконання запиту та отримання кількості видалених записів
int rowsAffected = command.ExecuteNonQuery();
// Повідомлення про результат операції
if (rowsAffected > 0)
{
MessageBox.Show($"Успішно видалено {rowsAffected} книг.",
"Результат операції",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Не знайдено книг за вказаний рік.",
"Інформація",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
// Оновлення даних у DataGridView після видалення
LoadBooks();
}
catch (Exception ex)
{
// Обробка помилок з виведенням повідомлення
MessageBox.Show($"Помилка при видаленні книг: {ex.Message}",
"Помилка бази даних",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
LoadBooks.
private void LoadBooks()
{
// Використання блоку using для автоматичного звільнення ресурсів
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
// Відкриття з'єднання з базою даних
connection.Open();
// SQL-запит для отримання всіх книг
string query = "SELECT * FROM Книги";
// Створення адаптера даних
OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
// Очищення попередніх даних у DataSet
книгиDataSet.Clear();
// Заповнення DataSet новими даними
adapter.Fill(книгиDataSet, "Книги");
// Прив'язка даних до DataGridView
dataGridView1.DataSource = книгиDataSet.Tables["Книги"];
}
catch (Exception ex)
{
// Обробка помилок з інформативним повідомленням
MessageBox.Show($"Помилка завантаження даних: {ex.Message}",
"Помилка бази даних",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}

