Asp.net

如何?參數和LIKE語句SQL

  • October 30, 2008

我正在編寫一個搜尋函式,並且已經想到了使用參數來防止或至少限制 SQL 注入攻擊的這個查詢。但是,當我通過我的程序執行它時,它不會返回任何內容:

SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')

參數可以這樣使用嗎?還是它們僅在以下情況下有效:

SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'<string>搜尋對像在哪裡)。

編輯:我正在用 VB.NET 建構這個函式,這對你們貢獻的語法有影響嗎?

另外,我在 SQL Server 中執行了這個語句:SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE%max%’)` 並返回結果。

您的 Visual Basic 程式碼如下所示:

Dim cmd as New SqlCommand("SELECT * FROM compliance_corner WHERE (body LIKE '%' + @query + '%') OR (title LIKE '%' + @query + '%')")

cmd.Parameters.Add("@query", searchString)

好吧,我會選擇:

Dim cmd as New SqlCommand(
"SELECT * FROM compliance_corner"_
 + " WHERE (body LIKE @query )"_ 
 + " OR (title LIKE @query)")

cmd.Parameters.Add("@query", "%" +searchString +"%")

引用自:https://stackoverflow.com/questions/251276