using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows;
namespace Exam_Shafigullin_V19
{
    public partial class MainWindow : Window
    {
        // Строка подключения к базе данных
        private readonly string connectionString = "Data Source=srv-wsr\\is4;user id=user28;password=is4-user28;Initial Catalog=Zarplata;Integrated Security=False";
        public MainWindow()
        {
            InitializeComponent();
            LoadEmployees(); // Загрузка данных при запуске программы
        }
        // Метод для загрузки данных из базы данных в DataGrid
        private void LoadEmployees()
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    // SQL-запрос для получения списка сотрудников
                    string query = @"
                        SELECT 
                            e.EmployeeID AS [Табельный номер],
                            e.FullName AS [ФИО сотрудника],
                            p.PositionName AS [Должность],
                            p.Salary AS [Оклад],
                            e.WorkedHours AS [Отработанные часы]
                        FROM EmployeeCard e
                        INNER JOIN PositionDirectory p ON e.PositionID = p.PositionID";
                    SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    EmployeeGrid.ItemsSource = dataTable.DefaultView;
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Ошибка загрузки данных: {ex.Message}");
                }
            }
        }
        // Метод для добавления нового сотрудника
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    // SQL-запрос для добавления нового сотрудника
                    string query = @"
                        INSERT INTO EmployeeCard (FullName, PositionID, PayCode, WorkedHours)
                        VALUES (@FullName, @PositionID, @PayCode, @WorkedHours)";
                    SqlCommand command = new SqlCommand(query, connection);
                    command.Parameters.AddWithValue("@FullName", FullNameTextBox.Text);
                    command.Parameters.AddWithValue("@PositionID", int.Parse(PositionIDTextBox.Text));
                    command.Parameters.AddWithValue("@PayCode", int.Parse(PayCodeTextBox.Text));
                    command.Parameters.AddWithValue("@WorkedHours", decimal.Parse(WorkedHoursTextBox.Text));
                    command.ExecuteNonQuery();
                    MessageBox.Show("Сотрудник успешно добавлен!");
                    ClearFields();
                    LoadEmployees();
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Ошибка при добавлении сотрудника: {ex.Message}");
                }
            }
        }
        // Метод для редактирования выбранного сотрудника
        private void EditButton_Click(object sender, RoutedEventArgs e)
        {
            if (EmployeeGrid.SelectedItem is DataRowView selectedRow)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    try
                    {
                        connection.Open();
                        // SQL-запрос для редактирования сотрудника
                        string query = @"
                            UPDATE EmployeeCard
                            SET FullName = @FullName,
                                PositionID = @PositionID,
                                PayCode = @PayCode,
                                WorkedHours = @WorkedHours
                            WHERE EmployeeID = @EmployeeID";
                        SqlCommand command = new SqlCommand(query, connection);
                        command.Parameters.AddWithValue("@FullName", FullNameTextBox.Text);
                        command.Parameters.AddWithValue("@PositionID", int.Parse(PositionIDTextBox.Text));
                        command.Parameters.AddWithValue("@PayCode", int.Parse(PayCodeTextBox.Text));
                        command.Parameters.AddWithValue("@WorkedHours", decimal.Parse(WorkedHoursTextBox.Text));
                        command.Parameters.AddWithValue("@EmployeeID", selectedRow["Табельный номер"]);
                        command.ExecuteNonQuery();
                        MessageBox.Show("Данные сотрудника успешно обновлены!");
                        ClearFields();
                        LoadEmployees();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"Ошибка при редактировании данных: {ex.Message}");
                    }
                }
            }
            else
            {
                MessageBox.Show("Выберите сотрудника для редактирования.");
            }
        }
        // Метод для удаления выбранного сотрудника
        private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            if (EmployeeGrid.SelectedItem is DataRowView selectedRow)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    try
                    {
                        connection.Open();
                        // SQL-запрос для удаления сотрудника
                        string query = "DELETE FROM EmployeeCard WHERE EmployeeID = @EmployeeID";
                        SqlCommand command = new SqlCommand(query, connection);
                        command.Parameters.AddWithValue("@EmployeeID", selectedRow["Табельный номер"]);
                        command.ExecuteNonQuery();
                        MessageBox.Show("Сотрудник успешно удален!");
                        ClearFields();
                        LoadEmployees();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"Ошибка при удалении сотрудника: {ex.Message}");
                    }
                }
            }
            else
            {
                MessageBox.Show("Выберите сотрудника для удаления.");
            }
        }
        // Метод для очистки полей ввода
        private void ClearFields()
        {
            FullNameTextBox.Clear();
            PositionIDTextBox.Clear();
            PayCodeTextBox.Clear();
            WorkedHoursTextBox.Clear();
        }
    }
}
Этот код работает, только данные не загружает