0

当我在我的数据网格中删除一行时,我在更新我的数据库时遇到了问题。

我尝试使用RowsRemoved事件,但它返回一个错误,即删除的行中没有值。

所以当我尝试搜索时,我遇到了这个类似的问题,到目前为止我发现的所有类似问题都是通过添加或减去某个数字(如 + 1 或 - 1)。所以我将代码与我的参数相匹配。

private void dataGridSales_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    using (SqlConnection conn = new SqlConnection(@"Server=" + ip + "," + port + "; Database=records; User ID=" + sqlid + "; Password=" + sqlpass + ""))
    {
        conn.Open();
        int addqty = Convert.ToInt32(dataGridSales.SelectedRows[0].Cells[1].Value.ToString());
        string part = dataGridSales.SelectedRows[0].Cells[5].ToString();
        using (SqlCommand cmd = new SqlCommand(@"UPDATE [dbo].[products]
                SET Quantity = [Quantity] + '" + addqty + "' WHERE [Part No.] = '" + part + "'", conn))
        {
            cmd.ExecuteNonQuery();
        }
        conn.Close();
    }
}

问题是,它没有更新我的数据库。我也在我的 SQL 中试过这个

Quantity = Quantity + '" + addqty + "'
Quantity += '" + addqty + "'

我正在使用 SQL Server 2014

这是断点处的 addqty 和 part 的值 在此处输入图像描述

这是我的 datagridview 列。ColumnIndex = 5 是part 值所在的位置,RowIndex 是选中的行。

在此处输入图像描述

编辑:

我已经解决了这个问题。这是一个小错误,我没有正确检查语法(即使没有显示错误)。

string part = dataGridSales.SelectedRows[0].Cells[5].ToString();

忘记添加.Value

string part = dataGridSales.SelectedRows[0].Cells[5].Value.ToString();
4

2 回答 2

0
Quantity = Quantity + '" + addqty + "'

您定义addqty为 int,但在 SQL 中将其用作字符串。删除单引号以将值用作数字而不是文本。

Quantity = Quantity + " + addqty + "
于 2018-04-27T12:07:19.507 回答
0

尝试替换 dataGridSales.SelectedRows[0].Cells[1].Value.ToString() 和dataGridSales.SelectedRows[0].Cells[5].ToString(); 经过

dataGridSales.SelectedRows[e.RowIndex].Cells[1].Value.ToString();
dataGridSales.SelectedRows[e.RowIndex].Cells[5].ToString();
于 2018-04-27T12:13:23.900 回答