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


using System;
using System.Windows.Forms;
using MySqlConnector;

namespace ExamPractice
{
    public partial class Form1 : Form
    {
        private string connectionString =
            "Server=127.0.0.1;Port=3306;Database=exam_contacts;User ID=root;Password=ТВОЙ_ПАРОЛЬ;";

        public Form1()
        {
            InitializeComponent();

            dgvContacts.AllowUserToAddRows = false;
            dgvContacts.ReadOnly = true;
            dgvContacts.MultiSelect = false;
            dgvContacts.SelectionMode =
                DataGridViewSelectionMode.FullRowSelect;
        }

        // Загрузка контактов из базы в таблицу на форме
        private void LoadContacts()
        {
            try
            {
                using (MySqlConnection connection =
                    new MySqlConnection(connectionString))
                {
                    connection.Open();

                    string sql =
                        "SELECT id, name, phone FROM contacts ORDER BY id";

                    using (MySqlCommand command =
                        new MySqlCommand(sql, connection))
                    {
                        using (MySqlDataReader reader =
                            command.ExecuteReader())
                        {
                            dgvContacts.Rows.Clear();

                            while (reader.Read())
                            {
                                int id = reader.GetInt32("id");
                                string name = reader.GetString("name");
                                string phone = reader.GetString("phone");

                                dgvContacts.Rows.Add(id, name, phone);
                            }
                        }
                    }
                }
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Ошибка загрузки: " + ex.Message);
            }
        }

        // Кнопка «Загрузить контакты»
        private void btnConnect_Click(object sender, EventArgs e)
        {
            LoadContacts();
        }

        // Кнопка «Добавить»
        private void btnShow_Click(object sender, EventArgs e)
        {
            string name = txtName.Text.Trim();
            string phone = txtPhone.Text.Trim();

            if (name == "" || phone == "")
            {
                MessageBox.Show("Заполните имя и телефон");
                return;
            }

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

                    string sql =
                        "INSERT INTO contacts (name, phone) " +
                        "VALUES (@name, @phone)";

                    using (MySqlCommand command =
                        new MySqlCommand(sql, connection))
                    {
                        command.Parameters.AddWithValue("@name", name);
                        command.Parameters.AddWithValue("@phone", phone);

                        command.ExecuteNonQuery();
                    }
                }

                LoadContacts();

                txtName.Clear();
                txtPhone.Clear();
                txtName.Focus();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Ошибка добавления: " + ex.Message);
            }
        }

        // Кнопка «Удалить»
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dgvContacts.CurrentRow == null)
            {
                MessageBox.Show("Выберите контакт");
                return;
            }

            int id = Convert.ToInt32(
                dgvContacts.CurrentRow.Cells["colId"].Value);

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

                    string sql =
                        "DELETE FROM contacts WHERE id = @id";

                    using (MySqlCommand command =
                        new MySqlCommand(sql, connection))
                    {
                        command.Parameters.AddWithValue("@id", id);

                        command.ExecuteNonQuery();
                    }
                }

                LoadContacts();

                txtName.Clear();
                txtPhone.Clear();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Ошибка удаления: " + ex.Message);
            }
        }

        // Нажатие на контакт — перенос данных в поля ввода
        private void dgvContacts_CellClick(
            object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            txtName.Text = dgvContacts.Rows[e.RowIndex]
                .Cells["colName"].Value.ToString();

            txtPhone.Text = dgvContacts.Rows[e.RowIndex]
                .Cells["colPhone"].Value.ToString();
        }

        // Кнопка «Изменить»
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (dgvContacts.CurrentRow == null)
            {
                MessageBox.Show("Выберите контакт");
                return;
            }

            int id = Convert.ToInt32(
                dgvContacts.CurrentRow.Cells["colId"].Value);

            string name = txtName.Text.Trim();
            string phone = txtPhone.Text.Trim();

            if (name == "" || phone == "")
            {
                MessageBox.Show("Заполните имя и телефон");
                return;
            }

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

                    string sql =
                        "UPDATE contacts " +
                        "SET name = @name, phone = @phone " +
                        "WHERE id = @id";

                    using (MySqlCommand command =
                        new MySqlCommand(sql, connection))
                    {
                        command.Parameters.AddWithValue("@id", id);
                        command.Parameters.AddWithValue("@name", name);
                        command.Parameters.AddWithValue("@phone", phone);

                        command.ExecuteNonQuery();
                    }
                }

                LoadContacts();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Ошибка изменения: " + ex.Message);
            }
        }

        // Кнопка «Количество контактов»
        private void btnCount_Click(object sender, EventArgs e)
        {
            int count = dgvContacts.Rows.Count;

            MessageBox.Show("Контактов: " + count);
        }
    }
}