2013-08-31 49 views
1

我只是雙重檢查在這裏,我敢肯定其他人偶爾有這個問題:沒有用戶輸入的參數化查詢?

是否有任何理由使用參數化查詢時,不涉及用戶輸入?例如,將隨機字符串放入SQL表時。

+1

如果你有一個完全靜態的一塊SQL的,沒有必要爲一個參數化查詢。只要SQL查詢的某些部分(例如字符串或數字文字)可能會發生變化(不管這是由於用戶輸入還是由隨機數字生成器引起的),使用參數化查詢可能是有意義的。 – stakx

+2

也許明天這個變量_is_用戶輸入。此外,sql參數還可以防止其他問題,如數據類型轉換或本地化問題。使用參數通常也更高效。 –

回答

1

爲了安全起見,是的。即使您確定當前的值現在是絕對安全的,您是否可以確保在未來的某個日期,其他人不會進行更改,或者爲了不同的目的而使用相同的查詢?

0

如果沒有其他原因,我喜歡代碼是乾淨的。有幾種查詢理論上可以在沒有參數化的情況下安全運行,但是構建字符串非常醜陋,而且難以理解的代碼在需要維護時很難理解。

在C#中,例如(在這種情況下,PL/SQL查詢)

String query = @"SELECT thing, stuff 
       FROM table_of_things 
       WHERE thing = :thing 
       OR stuff = :stuff";