如何使用datagrid添加某个值来更新数据库?

时间:2018-04-27 11:53:54

标签: c# sql-server database datagridview

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

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

因此,当我尝试搜索时,我已经来到这个similar problem,到目前为止我发现的所有类似问题都是通过添加或减去某个数字(如+ 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的值 enter image description here

这是我的datagridview列。 ColumnIndex = 5是部件值,RowIndex是选定的行。

enter image description here

修改

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

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

忘记添加.Value

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

2 个答案:

答案 0 :(得分:0)

Quantity = Quantity + '" + addqty + "'

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

Quantity = Quantity + " + addqty + "

答案 1 :(得分: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();