C# 我在ASP.NET中有一个库存数据库。如果我试图减少库存量超过可用库存量,我需要一条错误消息
我有一个基于网站的库存系统,我可以增加库存和减少库存。但是,当我减小它时,如果您试图将它减小到-1,我希望出现一个错误 例如:我在一件商品上有40支库存,我想拿走41支。它应该会给我一条错误消息,告诉我C# 我在ASP.NET中有一个库存数据库。如果我试图减少库存量超过可用库存量,我需要一条错误消息,c#,asp.net,vbscript,sqlcommand,stock,C#,Asp.net,Vbscript,Sqlcommand,Stock,我有一个基于网站的库存系统,我可以增加库存和减少库存。但是,当我减小它时,如果您试图将它减小到-1,我希望出现一个错误 例如:我在一件商品上有40支库存,我想拿走41支。它应该会给我一条错误消息,告诉我错误:库存不足 protected void Button1_Click(object sender, EventArgs e) { con.Open(); SqlCommand cmd = new SqlCommand("update Inventory set stock =
错误:库存不足
protected void Button1_Click(object sender, EventArgs e)
{
con.Open();
SqlCommand cmd = new SqlCommand("update Inventory set stock = stock - '"
+ txtstockremove.Text + "' where model_number='" + txtmodelno.Text + "'", con);
cmd.ExecuteNonQuery();
con.Close();
GridView1.DataBind();
Label1.Visible = true;
Label1.Text = "Stock Successfully Removed!";
}
我建议允许数据库做它擅长的事情。在
库存
表中添加一个约束,这样您就可以保证库存
永远不会变为负值
ALTER TABLE dbo.Inventory ADD CONSTRAINT CK_Inventory_Stock CHECK (Stock >= 0)
这样做的副作用是,您的cmd.ExecuteNonQuery()
语句可能会引发异常。所以你应该做好准备:
try {
cmd.ExecuteNonQuery();
GridView1.DataBind();
Label1.Visible = true;
Label1.Text = "Stock Successfully Removed!";
} catch (SqlException e) {
Label1.Visible = true;
Label1.Text = e.ToString();
}
如果我正确理解了问题,您需要在更新之前验证库存:
protected void Button1_Click(object sender, EventArgs e)
{
con.Open();
SqlDataReader reader;
SqlCommand cmd = new SqlCommand("select stock from Inventory, con);
cmd.CommandType = CommandType.Text;
reader = cmd.ExecuteReader();
// Data is accessible through the DataReader object here. You'll have to fill this part in
cmd.ExecuteNonQuery();
if (txtstockremove.Text <= currentStock)
{
SqlCommand cmd = new SqlCommand("update Inventory set stock= stock - '" + txtstockremove.Text + "' where model_number='" + txtmodelno.Text + "'", con);
cmd.ExecuteNonQuery();
}
else
{
Label1.Visible = true;
Label1.Text = "Stock Successfully Removed!";
}
con.Close();
GridView1.DataBind();
Label1.Visible = true;
Label1.Text = "Stock Successfully Removed!";
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
con.Open();
SqlDataReader;
SqlCommand cmd=新的SqlCommand(“从库存中选择库存,con”);
cmd.CommandType=CommandType.Text;
reader=cmd.ExecuteReader();
//可以通过此处的DataReader对象访问数据。您必须填写此部分
cmd.ExecuteNonQuery();
if(txtstockremove.Text)您永远不应该将SQL查询与直接用户输入连接起来。此代码很容易出错,这可能是您的软件中的一个严重安全缺陷。我将对此进行更好的解释,因此我需要一个标签来显示“错误:库存不足”"如果我在文本框中键入30,可用的存量是25。因此,我希望用户验证错误不会降到-5。希望这更有意义,对不起,我是一个初学者。好吧,这个想法与我上面写的代码基本相同。我只会更改一件事:我不会将函数连接到ButtonClick,而是使用文本框的TextChanged事件。因此,基本上是:1.每当用户更改值时-您根据数据库测试您是否有足够的库存。2.如果您这样做-没有问题。3.如果您不这样做-显示错误消息(我还将禁用提交按钮)。4.如果用户单击按钮-您不需要再次验证-只需更新数据库(和你以前做的一样)。希望这有帮助。