Загрузка данных
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);
}
}
}