我正在编写一个程序来维护我们商店的药品库存。
我有一个添加到购物车列表,它打开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
数据类型的正确值。