2017-08-06 110 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);