我开发了一个库存系统,在销售形式中我们有一个datagridview,我们填充项目然后“结算”按钮来切断库存中的项目。但是我的代码有时不起作用,我们的库存项目与我们用SQL命令剪切的不一样。
例如:当我切3时,我有20个移动它离开7或5.我认为我的命令不太可读。
这是我的代码:
try
{
mycon.Open();
int y = 0;
for (int i = 0; i < Data1.Rows.Count; i++)
{
SqlCommand cmd5 = new SqlCommand("UPDATE Pharmacy_Items Set Quantity= Quantity - " + Data1.Rows[y].Cells[2].Value + " where ItemName='" + Data1.Rows[y].Cells[1].Value + "'", mycon);
cmd5.ExecuteNonQuery();
y += 1;
}
mycon.Close();
}
catch (Exception)
{
MessageBox.Show("Erorr404");
}
使用参数代码:
mycon.Open();
int y = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string sql = "UPDATE [dbo].[Pharmacy_Items] Set Quantity= Quantity - @Quantity where ItemName=@ItemName";
using (SqlCommand cmd5 = new SqlCommand(sql, mycon))
{
cmd5.CommandType = CommandType.Text;
var qunatityParam = new SqlParameter { Value = dataGridView1.Rows[y].Cells[2].Value, SqlDbType = SqlDbType.Int, ParameterName = "Quantity" };
var itemNameParam = new SqlParameter { Value = dataGridView1.Rows[y].Cells[1].Value, SqlDbType = SqlDbType.VarChar, ParameterName = "ItemName" };
cmd5.Parameters.Add(qunatityParam);
cmd5.Parameters.Add(itemNameParam);
cmd5.ExecuteNonQuery();
}
y += 1;
}
mycon.Close();