Загрузка данных


Код примерный, подставляйте свои данные 

Для того чтобы всё заработало, тебе нужно сделать две вещи:
Сделать бд
Создать проект в VS 20…
Вот как это должно выглядеть, после создания бд:
1. Подготовка (NuGet пакет)
В Visual Studio обязательно должен быть установлен драйвер.
Нажми правой кнопкой на проект -> Управление пакетами NuGet.
Найди и установи MySql.Data.
Без этого using MySql.Data.MySqlClient; будет подчеркнуто красным.

2. Заполнение данных подключения
В каждой форме в переменную connectionString (или connStr) нужно вписать твои данные.
Пример для сервера cfif31.ru:

string connectionString = "server=cfif31.ru; port=3306; username=твой_логин; password=твой_пароль; database=твоя_база_данных";

3. Вывод смежных таблиц (Изменение в Form2.cs)
Чтобы в таблице вместо author_id (цифры) отображалось author_name (текст), нам нужно создать метод в form1.

private void LoadData() 
{
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        try
        {
            connection.Open();

            // Запрос, который объединяет таблицу книг (book) и авторов (author)
            // Мы берем ID книги, название книги, имя автора из таблицы авторов и цену
            string query = "SELECT  book.idbook, book.name AS 'Название книги', author.author_name AS 'Автор', book.cena AS 'Цена' FROM book  INNER JOIN author ON book.author_id = author.idauthor"; (Меняйте под свои названия в таблице) 

            MySqlDataAdapter adapter = new MySqlDataAdapter(query, connection);
            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);
            
            dataGridView1.DataSource = dataTable;

            // Скрываем колонку с ID, чтобы она не мешала пользователю, 
            // но оставалась доступной для кода (для удаления)
            if (dataGridView1.Columns["idbook"] != null) {
                dataGridView1.Columns["idbook"].Visible = false;
            }
        }
        catch (Exception ex) 
        { 
            MessageBox.Show("Ошибка при загрузке данных: " + ex.Message); 
        }
    }
}
Почему это работает:
INNER JOIN author ON book.author_id = author.idauthor: Эта строка «склеивает» две таблицы. Программа смотрит на ID автора в таблице книг и находит соответствующее имя в таблице авторов.
AS 'Название книги': Это переименование колонки прямо в запросе, чтобы в твоем dataGridView1 шапка была на русском языке.
Visible = false: Теперь пользователь видит только красивые названия и цены, но когда ты нажмешь «Удалить», код всё равно сможет вытащить idbook из скрытой колонки.