2011-11-02 48 views
1

我正在使用C#中的SqlCommand類在SQL服務器上執行存儲過程。目前,我只是建立一個執行字符串,將參數值解析到存儲過程,然後在服務器上執行字符串。問題是當我有引號字符串沒有得到正確傳遞使用引號將參數傳遞給SQL Server SP

是否有可能使用SqlParameter對象傳遞參數,而不必擔心引用脫離?

回答

1

是的,這是發送參數的首選方式。

例子:

using (SqlCommand cmd = new SqlCommand("SomeProcedure", connection) { 
    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 42; 
    cmd.Parameters.Add("@Text", SqlDbType.Varchar, 50).Value = "A string value"; 
    cmd.ExecuteNonQuery(); 
} 
1

簡而言之,是的 - 您應該至少使用SqlParameter對象而不是字符串連接,以防止SQL注入攻擊。

+0

聽起來像是小鮑比表的工作。 –

0

使用SqlParameter時,您可以指定參數的類型和大小。這樣做可以確保執行計劃的重用(儘管StoredProcs不是這樣的問題),但也確保您不必擔心轉義和引用 - 這些都是爲您完成的。

相關問題