2017-08-06 91 views
1

我在C#(Sql server(LocalDB)\ v11.0)中有以下代碼 如果Definition屬性沒有特殊字符,則執行Insert。但有些時候它有一個未知的特殊字符,我收回錯誤。插入的隨機特殊字符

for() 
    { 
    if(){ 
    DB.Docommand("INSERT INTO Test5(P_Def) VALUES('"+ pro.Definition + "')"); 
     } 
    } 

在數據庫中的數據類型數據類型爲nvarchar(最大) ,但我收到以下錯誤:近

不正確的語法.....

我想插入我有特殊字符屬性。 id可以做些什麼? 謝謝

+1

簡短的回答是改變'VALUES('「+'到'VALUES(N'「+' – mjwills

+3

[有什麼好的方法來防止SQL注入?](https://stackoverflow.com/questions/14376473/what-are-good-ways-to-prevent-sql -注射) – mjwills

回答

5

參數化您的插入。除了獲得與那些有效的內部nvarchar任何字符插入串的能力,你也將避免潛在sql injection attack修復嚴重的安全問題:

var cmd = new SqlCommand("INSERT INTO Test5(P_Def) VALUES(@Def)", con); 
cmd.Parameters.AddWithValue("@Def", pro.Definition);