2012-04-22 64 views
0

我已經看到了一些示例如何使用參數來避免字符轉義。使用參數對SQL注入是否安全100%?C#ASP.NET SQL參數化

此外,你可以請一些基本的查詢(這是reguraly使用),以及你如何實現參數?

我之前搜索過的一些網站提供了太複雜的例子。

+0

我毫不猶豫地指出,什麼是100%安全的。另外,你經常使用的查詢是什麼意思?這完全取決於你的數據模型。 – 2012-04-22 17:04:04

回答

2

參數化的SQL查詢的一個基本的例子如下:

SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn); 
SqlParameter param = new SqlParameter(); 
param.ParameterName = "@username"; 
param.Value = "abc123" 
command.Parameters.Add(param); 

conn是已經建立的SqlConnection的。

@username是執行命令時將被替換的參數名稱。

abc123是我爲示例設置的用戶名。

這顯然是一個編造的場景,但你明白了。

0

作爲一個較短的版本,你可以使用

SqlCommand command = new SqlCommand(@"select city from users where username = @username", conn); 
command.Parameters.AddWithValue("@username", "value"); 
+0

確定 - 但使用'.AddWithValue()'方法基本上告訴ADO.NET猜測所使用的數據類型 - 大部分時間它的表現都很好。但有時候,它已經關閉 - 有時候關閉很多。因此,我不建議這樣做 - 總是明確定義**數據類型總是更好,並且不會讓ADO.NET運行時造成猜測...... – 2012-04-22 20:20:20

+0

我相信'AddWithValue'有一個重載讓你通過一個類型。 – 2012-04-22 21:05:30