我正在创建一个表单页面,我需要在数据网格视图中显示数据。当用户从网格视图添加任何项目时,应该从库存中删除,并在用户按下添加按钮时更新库存。
我正在使用的代码给了我这个例外:
其他信息:'='附近的语法不正确。
我的代码:
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();
}
答案 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,则不会抛出任何错误。