我有一个查询,我用来过滤网格
SELECT * FROM Resources
WHERE ResourceName ='" + ResourceName + "'
AND Status = '" + status + "' "
我的网格看起来像这样
ResourceID|ResourceName|Status
我在下拉列表中添加了ResorceName和Status以过滤网格现在我的问题是,在这个select语句中,如果任何参数为空,则数据未绑定到网格,但如果我传递了两个参数,则过滤网格并从网格中提供所需的行或过滤的行...任何人都可以告诉我如果任何参数为null,我如何编写select语句。
答案 0 :(得分:1)
在下面的帖子中查看所有查询
答案 1 :(得分:1)
在快速解决问题方面,这样的事情会起作用......
Select * From Resources Where (ResourceName = '"+ ResourceName + "' OR ResourceName IS NULL) AND (Status = '" + Status +"' OR Status IS NULL)
然而,这不是一个可接受的代码段,因为它易受SQL注入攻击。实质上,假设传入的ResourceName是
'; Drop Table Resources; --
你可能不需要我告诉你它是做什么的。
我的建议是始终使用.Net中的SQLCommand对象 - 在其他语言中也称为“Prepared Statements”。它可以防止这种诡计......
答案 2 :(得分:0)
SELECT * FROM Resources
WHERE (ResourceName = CASE WHEN '" + ResourceName + "' IS NULL THEN ResourceName ELSE '" + ResourceName + "' END) //do same for other parameter