在ADO.Net中,在sql连接内部的循环上迭代会导致错误



我正在编写一个程序来维护我们商店的药品库存。

我有一个添加到购物车列表,它打开SQL连接并从整个库存中删除1个数量,其中参数为@medicine

我的addToCart列表框的代码看起来像这个

using (SqlConnection conn = new SqlConnection(cstring))
{
using(SqlCommand cmd = new SqlCommand("Update Medicine set Quantity = Quantity - 1 where Name = @medicine", conn))
{
conn.Open();
foreach(string item in cartMedicine)
{
cmd.Parameters.AddWithValue("@medicine", item);
cmd.ExecuteNonQuery();
}
conn.Close();
listMedicine.Items.Clear();
}
}

现在我想循环我的cartMedicine列表,以逐个获取列表框中存储的所有名称。但我收到的错误信息是,

变量名"@medicine"已经声明。变量名称在查询批处理或存储过程中必须是唯一的。'

我如何使用相同的逻辑,每次为我的项目列表中的每个库存提供临时声明?

不要一次又一次地添加参数,只添加一次,然后设置其值"AddWithValue是邪恶的"无论如何

...
SqlParameter sqlParameter = cmd.Parameters.Add("@medicine", SqlDbType.<data type>, <length>)
foreach (string item in cartMedicine)
{
sqlParameter.Value = item;
cmd.ExecuteNonQuery();
}
...

<data type><length>替换为数据库中medicine.quantity数据类型的正确值。

相关内容

  • 没有找到相关文章

最新更新