簡體   English   中英

如何在這種情況下編寫select語句?

[英]How to write the select statement in this condition?

我有一個查詢,我用來過濾網格

     SELECT * FROM Resources
              WHERE ResourceName  ='" + ResourceName + "' 
              AND  Status = '" + status + "' "

我的網格看起來像這樣

  ResourceID|ResourceName|Status

我已經在下拉列表中添加了ResorceName和Status以過濾網格現在我的問題是,在這個select語句中,如果任何參數為空,則數據未綁定到網格,但如果我傳遞了兩個參數,則過濾網格和從網格中提供所需的行或過濾的行...任何人都可以告訴我如果任何參數為null,我如何編寫select語句。

看看下面的帖子就可以了解所有問題

抓住所有例子

在快速解決問題方面,這樣的事情會起作用......

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”。 它可以防止這種詭計......

SELECT * FROM Resources
WHERE (ResourceName  = CASE WHEN '" + ResourceName + "' IS NULL THEN ResourceName  ELSE '" + ResourceName + "' END) //do same for other parameter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM