Запрос UPDATE не обновляет данные в таблице БД C#

Не могу понять почему так происходит, я вроде бы всё правильно написал.

private void dataGridView3_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        accessGeneralData = true;

        try
        {
            if (dataGridView3.Rows[e.RowIndex].Cells[2].Value != null)
            {
                for (int i = 0; i <= dsGeneralData.Tables["GeneralData"].Rows.Count - 1; i++)
                {
                    string cellDataGrid = dataGridView3.Rows[e.RowIndex].Cells["Наименование"].Value.ToString();
                    string cellDataSet = dsGeneralData.Tables["GeneralData"].Rows[i]["Наименование"].ToString();

                    if (cellDataGrid == cellDataSet)
                    {
                        int boxes = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value);
                        int sold = Convert.ToInt32(dataGridView3.Rows[e.RowIndex].Cells[2].Value);
                        int elemRemains = Convert.ToInt32(dataGridView3.Rows[e.RowIndex].Cells[3].Value);
                        int remains = Convert.ToInt32(dataGridView3.Rows[e.RowIndex].Cells[4].Value);
                        int finRemains;

                        elemRemains = boxes - sold;

                        if (elemRemains < 0)
                        {
                            remains = remains + elemRemains;

                            for (int g = 1; remains <= 0; g++)
                            {
                                remains++;
                                elemRemains++;

                                if (elemRemains < 0)
                                {
                                    MessageBox.Show("Невозможно вычесть из остатка недостающие число, так как остаток меньше нуля.",
                                        "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                            }
                        }

                        finRemains = elemRemains + remains;

                        SqlCommand updateGeneralData = new SqlCommand($"UPDATE GeneralData SET Остаток @Ост WHERE Код = @Код", connection);

                        updateGeneralData.Parameters.AddWithValue("@Ост", finRemains);
                        updateGeneralData.Parameters.AddWithValue("@Код", i);
                        updateGeneralData.ExecuteNonQuery();

                        SqlCommand updateProduct = new SqlCommand($"UPDATE Product SET Остаток = @Ост WHERE Наименование = @Наименование", connection);

                        updateProduct.Parameters.AddWithValue("@Ост", finRemains);
                        updateProduct.Parameters.AddWithValue("@Наименование", cellDataSet);
                        updateProduct.ExecuteNonQuery();
                    }

                    break;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

Ответы (1 шт):

Автор решения: aepot

Команды надо диспозить

using (SqlCommand updateGeneralData = new SqlCommand($"UPDATE GeneralData SET Остаток @Ост WHERE Код = @Код", connection))
{
    updateGeneralData.Parameters.AddWithValue("@Ост", finRemains);
    updateGeneralData.Parameters.AddWithValue("@Код", i);
    updateGeneralData.ExecuteNonQuery();
}

using (SqlCommand updateProduct = new SqlCommand($"UPDATE Product SET Остаток = @Ост WHERE Наименование = @Наименование", connection))
{
    updateProduct.Parameters.AddWithValue("@Ост", finRemains);
    updateProduct.Parameters.AddWithValue("@Наименование", cellDataSet);
    updateProduct.ExecuteNonQuery();
}

Использование объектов, реализующих IDisposable

→ Ссылка