Назад Вперед Зміст

Приклад запиту до бази даних. ADO.NET

Отримати всі книги певного року видання з таблиці "Книги" та вивести їх у компонент DataGridView.

Для цього використаємо ADO.NET у додатку Windows Forms з базою даних Access, яка містить таблицю "Книги" з колонкою року видання.

Покрокова інструкція:

  1. Крок 1: Створення проекту Windows Forms
    1. Відкрити Visual Studio
    2. Вибрати "Create a new project"
    3. Обрати шаблон "Windows Forms App (.NET Framework)"
    4. Вказати назву проекту та місце збереження
  2. Крок 2: Додати посилання на бібліотеку для роботи з Access
    1. У Solution Explorer клікнути правою кнопкою на References
    2. Вибрати "Add Reference"
    3. Знайти "Microsoft Access Database Engine Object Library"
  3. Крок 3: Створення інтерфейсу користувача
    1. Додати на форму DataGridView, Button, TextBox
  4. Крок 4: Написання коду для підключення до бази даних
    1. Відкрити код форми (Form1.cs)
    2. Додати необхідні простори імен
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]!Книги.mdb";

        public Form1()
        {
            InitializeComponent();
        }

        // Обробник події для завантаження даних з бази
        private void buttonLoadData_Click(object sender, EventArgs e)
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    
                    // Створення адаптера та заповнення DataTable
                    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 button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
private void buttonSearch_Click_Click(object sender, EventArgs e)
{
    // Перевірка коректності введеного року
    if (int.TryParse(textBoxYear.Text, out int year))
    {
        // Виклик методу для пошуку книг за вказаним роком
        GetBooksByYear(year);
    }
    else
    {
        // Повідомлення про некоректне введення року
        MessageBox.Show("Будь ласка, введіть коректний рік видання.", 
                       "Помилка введення", 
                       MessageBoxButtons.OK, 
                       MessageBoxIcon.Warning);
    }
}
private void GetBooksByYear(int year)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        try
        {
            connection.Open();
            
            // SQL-запит для отримання книг за вказаним роком видання
            string query = "SELECT * FROM Книги WHERE [Год издания] = @Year";
            
            using (OleDbCommand command = new OleDbCommand(query, connection))
            {
                // Додавання параметра для запобігання SQL-ін'єкціям
                command.Parameters.AddWithValue("@Year", year);
                
                // Створення адаптера та заповнення DataTable
                OleDbDataAdapter adapter = new OleDbDataAdapter(command);
                DataTable dataTable = new DataTable();
                adapter.Fill(dataTable);
                
                // Встановлення джерела даних для DataGridView
                dataGridView2.DataSource = dataTable;
            }
        }
        catch (Exception ex)
        {
            // Повідомлення про помилку під час виконання запиту
            MessageBox.Show($"Помилка при пошуку книг: {ex.Message}", 
                           "Помилка бази даних", 
                           MessageBoxButtons.OK, 
                           MessageBoxIcon.Error);
        }
    }
}

Пояснення коду

  1. Рядок підключення: Вказуємо правильний шлях до бази даних Access у змінній connectionString
  2. Створення DataSet та BindingSource: Ініціалізуємо у конструкторі форми
  3. Прив'язка BindingSource до DataGridView: Виконується у методі Form1_Load
  4. Обробник події кнопки: Метод buttonSearch_Click перевіряє коректність введеного року
  5. Запит до бази даних: Метод GetBooksByYear виконує запит для отримання книг за вказаним роком

Деталі невізуальних компонентів

  1. OleDbConnection: Встановлює з'єднання з базою даних
  2. OleDbCommand: Виконує SQL-запити (використовує параметризовані запити для безпеки)
  3. OleDbDataAdapter: Заповнює DataSet даними
  4. DataSet: Містить дані таблиці "Книги" у пам'яті
  5. BindingSource: Керує прив'язкою даних до DataGridView

Переваги використання невізуальних компонентів

Чіткість коду, багаторазовість використання, спрощена робота з даними.

Результат:

Назад Вперед Зміст