繁体   English   中英

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

[英]Delete and minus data at specific cell from database

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

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

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

我的代码:

    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();
    }

错误是您将两个字符串连接在一起而没有空格。

但是还有许多其他错误。

所有用户值都应是具有正确类型的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,则不会引发任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM