Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库中删除并减去特定单元格处的数据_C#_Sql Server - Fatal编程技术网

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

C# 从数据库中删除并减去特定单元格处的数据,c#,sql-server,C#,Sql Server,我正在创建一个表单页面,需要在其中以数据网格视图显示数据。当用户从网格视图添加任何项目时,应将其从库存中减去,并在用户按下“添加”按钮时更新库存 我正在使用的代码给了我以下异常: 其他信息:“=”附近的语法不正确 我的代码: private void btnMoveItem_Click(object sender, EventArgs e) { SqlConnection con2 = new SqlConnection(@"Data Source=(locald

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

我正在使用的代码给了我以下异常:

其他信息:“=”附近的语法不正确

我的代码:

    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参数。
numquantity.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;
更新库存集合数量=数量-@数量,其中id=@id;

从库存中删除id=@id和Quantity在
@Quantity
中id=
之间没有空格,那么我只需要删除空格?
mysql
sql server
不同。我删除了
mysql
标记。为什么在删除某个项目后要尝试更新它?这并不能回答我的问题。从使用SQL参数开始。总是。然后,对用户输入执行数据验证。还考虑显示器的DGV;这就是它的设计目的。现在它给出了这个异常的附加信息:必须声明标量变量“@id”。对不起,我对C#和sql非常陌生。我有非常基本的知识,我已经编辑了答案。将
@item
替换为
@id
。但现在它只是删除整行,而不是更新它,如@puropoix所说,如果删除该产品,更新将无效。您必须根据规范编辑代码。