![](/img/trans.png)
[英]How to check whatever number user selected from dropdownlist , if its greater than Qty , display alert
[英]check if a number from a column in a table is greater than 0
抱歉,这个问题是重复的,但是我没有找到答案。 我想检查表中的列的值是否大于0,如果不执行任何操作。 问题是我不知道如何从表中获取值并进行检查。
我的点子:
if(column table(Quantity) where ID=@ID >0)
{
Do something
}
我正在使用asp.net,C#和SQL。 这是我的一些代码://此代码是将具有当前ID的项目添加到表中时,该项目的数量减少1。
SqlCommand command = new SqlCommand("UPDATE Items SET Quantity=Quantity-1;
command.ExecuteNonQuery();
在“项目”表中,我具有“项目数量”,因此可以说该特定项目的数量为5,并且每次添加到gridview的数量都减少1,我不希望它低于0。(现在使用此代码它低于0)我有我在上面告诉过的想法,但我不知道该怎么做。
有人知道怎么做吗?
只需在查询中使用WHERE。 从头到尾给我您的详细故事。 另外,如果您想在查询执行过程中发生错误时提醒错误,则可以通过将ExecuteNonQuery结果存储到变量中来进行。 这是供您参考
让我在这里强调一些要点:
For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command.
For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.
从这里,您甚至可以为查询返回错误结果添加一些逻辑处理。
只需在UPDATE命令中使用WHERE子句即可:
SqlCommand command = new SqlCommand(
"UPDATE Items SET Quantity=Quantity-1 WHERE ID=@Id AND Quantity>0");
command.Parameters.AddWithValue("@Id", id);
int numberOfRecords = command.ExecuteNonQuery();
if (numberOfRecords==0)
throw new Exception("Error setting quantity.");
您可以通过检查受影响的记录数来验证是否已设置数量,如果可以,则应为1。
若要在更新后获取“ Quantity
列的值,请在您的SQL语句中使用OUTPUT
子句,例如:
UPDATE <YOUR_TABLE> SET Quantity = Quantity - 1
OUTPUT INSERTED.Quantity
WHERE ID = <YOUR_ID>
将“ Quantity
返回为0后,您可以执行软件中所需的任何操作,例如,如果用户尝试进一步减小它,则显示提示。
有关MSDN的更多信息,请访问: http : //msdn.microsoft.com/zh-cn/library/ms177564.aspx
如果您不使用SQL Server 2005或更高版本(这是OUTPUT
所必需的),则仍然可以编写一个简单的存储过程来执行相同的操作,例如
CREATE PROCEDURE DecreaseQuantity
@id int
AS
BEGIN
UPDATE <YOUR_TABLE>
SET Quantity = Quantity - 1
WHERE ID = @id
SELECT Quantity
FROM <YOUR_TABLE>
WHERE ID = @id
END
我不建议您在应用程序代码中进行这种检查。
为了确保SQL中列的值范围,存在检查约束的构造。 例如,如果要确保列中永远不会出现负值(或零),则可以添加以下约束
ALTER TABLE Items
ADD CONSTRAINT CK_Items_Quantity_Range CHECK (
Quantity > 0
)
然后,如果您执行UPDATE/INSERT
您将收到一个异常,您可以在应用程序代码中对此做出反应。
或者,如果希望在列达到某个值时执行一些sql-action,也可以使用触发器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.