如何从库存C#sql中扣除数量

时间:2016-01-23 08:17:22

标签: c# sql

购买产品后,应减少库存数量

double qun;

qun = Convert.ToDouble(dataGridView1.Rows[0].Cells[3].Value) - Convert.ToDouble(textBox2.Text);

sqlconnection = new SqlCeConnection(ConnectionString);
sqlcommand = new SqlCeCommand();
sqlconnection.Open();
sqlcommand.Connection = sqlconnection;
sqlcommand.CommandText = (@"UPDATE ItemStock_Info SET Quantity =@qun WHERE [Item_Number]='"+ textBox1.Text +"'");
sqlcommand.Parameters.Add("@qun", qun);

sqlcommand.ExecuteNonQuery();
sqlconnection.Close();

1 个答案:

答案 0 :(得分:1)

如果变量qun是已售出的数量,那么您应该从数据库表中的值中减去它,而不是简单地将该值分配回来覆盖您的库存值

   @"UPDATE ItemStock_Info 
     SET Quantity = Quantity - @qun 
     WHERE ...  "

给你的一张纸条。为什么使用参数作为数量而不是where条件?应不惜一切代价避免这种情况,并应以不同的方式添加参数

sqlcommand.CommandText = (@"UPDATE ItemStock_Info 
                          SET Quantity = Quantity - @qun 
                          WHERE [Item_Number]=@num";
sqlcommand.Parameters.Add("@qun", SqlDbType.Float).Value = qun;
sqlCommand.Parameters.Add("@num", SqlDbType.NVarChar).Value = textBox1.Text;
sqlcommand.ExecuteNonQuery();

我应该在这里添加警告。我想你不想减去卖出的数量,如果这会将你的数量值改为零以下的水平。作为一个SQL Server CE数据库,可以安全地假设没有人可以改变你背后的Quantity值并且你已经在减法操作之前测试了这个条件,但在多用户环境中我建议你使用一个对这些字段具有更好的并发支持的数据库。