如何在我的程序中设置一个陷阱,当我按下购买按钮并且要购买的数量超过我的数据库中的剩余数量时,它会给出一个错误,指出没有足够的剩余数量。目前它只会达到负值。 SQL Server 不支持无符号值,我不知道我想做的事情是否可行。
这是我的代码。
SqlConnection con = new SqlConnection(
@"Data Source=DESKTOP-39SPLT0\SQLEXPRESS;Initial Catalog=posDB;Integrated Security=True");
string Query = "UPDATE tblProducts SET qty = qty - @quantity where pName = @name";
using (SqlCommand cmd = new SqlCommand(Query, con))
{
cmd.Parameters.AddWithValue("@quantity", int.Parse(txBurger.Text));
cmd.Parameters.AddWithValue("@name", label1.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
using (SqlCommand cmd = new SqlCommand(Query, con))
{
cmd.Parameters.AddWithValue("@quantity", int.Parse(txCheese.Text));
cmd.Parameters.AddWithValue("@name", label5.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
最佳答案
您可以对表中 qty
的值设置 CONSTRAINT
。例如:
CREATE TABLE test (qty int);
ALTER TABLE test ADD CONSTRAINT PosQty CHECK (qty >= 0);
GO
INSERT INTO test VALUES(3);
GO
UPDATE test
SET qty = qty - 2; --Will work (3 - 2 = 1)
GO
UPDATE test
SET qty = qty - 3; --Will fail (1 - 3 = -2)
GO
UPDATE test
SET qty = qty - 1; --Will work (1 - 1 = 0)
GO
--Clean up
DROP TABLE test;
当然这也不一定合适,看你的场景。您绝对需要确保正确处理错误。
关于c# - 计算以避免数据库中出现负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49387001/