从数据库中删除和减去特定单元格中的数据

时间:2017-01-08 20:22:10

标签: c# sql-server

我正在创建一个表单页面,我需要在数据网格视图中显示数据。当用户从网格视图添加任何项目时,应该从库存中删除,并在用户按下添加按钮时更新库存。

我正在使用的代码给了我这个例外:

  

其他信息:'='附近的语法不正确。

我的代码:

    private void btnMoveItem_Click(object sender, EventArgs e)
    {
        SqlConnection con2 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True");
        con2.Open();

        String Query1= "DELETE FROM Inventory WHERE id = " + tbID.Text + "";

        SqlCommand sqlcmd1 = new SqlCommand(Query1, con2);
        sqlcmd1.ExecuteNonQuery();

        SqlCommand sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity" +"WHERE id= " + tbID, con2);
        sqlcmd.Parameters.AddWithValue("@Item", this.nudQuantity.Text);
        sqlcmd.ExecuteNonQuery();

        con2.Close();
    }

1 个答案:

答案 0 :(得分:0)

错误是你连接了两个字符串,没有空格。

但还有很多其他错误。

所有用户值都应该是具有正确类型的sql参数。 必须解析/验证nudQuantity.Text。也许id

string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True";

using (var con2 = new SqlConnection(connectionString))
{
    con2.Open();
    var Query1 = "DELETE FROM Inventory WHERE id = @id";

    var sqlcmd1 = new SqlCommand(Query1, con2);
    sqlcmd1.Parameters.AddWithValue("@id", tbID.Text);
    sqlcmd1.ExecuteNonQuery();

    var sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity WHERE id=@id", con2);
    sqlcmd.Parameters.AddWithValue("@id", tbID.Text);
    sqlcmd.Parameters.AddWithValue("@Quantity", int.Parse(nudQuantity.Text));

    sqlcmd.ExecuteNonQuery();       
}

您也可以将这两个查询合并为一个。

此查询应该更符合您的需求。

UPDATE Inventory SET Quantity = Quantity-@Quantity WHERE id=@id;
DELETE FROM Inventory WHERE id = @id AND Quantity <= 0;

但是这里没有检查产品供应情况。如果@Quantity大于Quantity,则不会抛出任何错误。