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


using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace AddressBook1
{
    public partial class Form1 : Form
    {
        // ВНИМАНИЕ: замените '1234' на ваш реальный пароль от MySQL, если он другой
        string connStr = "server=127.0.0.1;user=root;database=address_book;password=1234;AllowPublicKeyRetrieval=True;";

        public Form1()
        {
            InitializeComponent();
            LoadData(); // Загружаем контакты при запуске
        }

        // Метод для загрузки данных из БД в таблицу
        private void LoadData()
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    conn.Open();
                    string sql = "SELECT id AS 'ID', name AS 'Имя', phone AS 'Телефон', email AS 'Email' FROM contacts";
                    MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
                    DataTable table = new DataTable();
                    adapter.Fill(table);
                    dataGridView1.DataSource = table;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка загрузки: " + ex.Message);
            }
        }

        // Кнопка "Добавить"
        private void button1_Click(object sender, EventArgs e)
        {
            Form inputForm = new Form();
            inputForm.Text = "Новый контакт";
            inputForm.Size = new System.Drawing.Size(300, 220);

            Label lblName = new Label() { Text = "Имя:", Location = new System.Drawing.Point(10, 20), AutoSize = true };
            TextBox txtName = new TextBox() { Location = new System.Drawing.Point(10, 45), Width = 250 };
            Label lblPhone = new Label() { Text = "Телефон:", Location = new System.Drawing.Point(10, 75), AutoSize = true };
            TextBox txtPhone = new TextBox() { Location = new System.Drawing.Point(10, 100), Width = 250 };
            Label lblEmail = new Label() { Text = "Email:", Location = new System.Drawing.Point(10, 130), AutoSize = true };
            TextBox txtEmail = new TextBox() { Location = new System.Drawing.Point(10, 155), Width = 250 };
            Button btnSave = new Button() { Text = "Сохранить", Location = new System.Drawing.Point(100, 185) };

            btnSave.Click += (s, ev) =>
            {
                try
                {
                    using (MySqlConnection conn = new MySqlConnection(connStr))
                    {
                        conn.Open();
                        string sql = "INSERT INTO contacts (name, phone, email) VALUES (@name, @phone, @email)";
                        MySqlCommand cmd = new MySqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@name", txtName.Text);
                        cmd.Parameters.AddWithValue("@phone", txtPhone.Text);
                        cmd.Parameters.AddWithValue("@email", txtEmail.Text);
                        cmd.ExecuteNonQuery();
                    }
                    inputForm.Close();
                    LoadData();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ошибка добавления: " + ex.Message);
                }
            };

            inputForm.Controls.Add(lblName);
            inputForm.Controls.Add(txtName);
            inputForm.Controls.Add(lblPhone);
            inputForm.Controls.Add(txtPhone);
            inputForm.Controls.Add(lblEmail);
            inputForm.Controls.Add(txtEmail);
            inputForm.Controls.Add(btnSave);
            inputForm.ShowDialog();
        }

        // Кнопка "Удалить"
        private void button2_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 0)
            {
                MessageBox.Show("Выберите строку для удаления!");
                return;
            }

            int id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["ID"].Value);

            if (MessageBox.Show("Удалить контакт с ID " + id + "?", "Подтверждение", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                try
                {
                    using (MySqlConnection conn = new MySqlConnection(connStr))
                    {
                        conn.Open();
                        string sql = "DELETE FROM contacts WHERE id = @id";
                        MySqlCommand cmd = new MySqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@id", id);
                        cmd.ExecuteNonQuery();
                    }
                    LoadData();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ошибка удаления: " + ex.Message);
                }
            }
        }

        // Кнопка "Обновить"
        private void button3_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        // Кнопка "Выход"
        private void button4_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}