更新库存系统的SQL命令

时间:2017-01-11 06:16:09

标签: c# sql-server ado.net

我开发了一个库存系统,在销售形式中我们有一个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();

0 个答案:

没有答案