2017-08-06 5 views
1

Ich habe den folgenden Code in C# (SQL-Server (LocalDB) \ v11.0) Wenn Definition-Eigenschaft kein Sonderzeichen hat, wird der Insert ausgeführt. aber manchmal hat es ein unbekanntes Sonderzeichen darin, und ich empfange den Fehler.Zufällige Sonderzeichen in Einfügung

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

in der Datenbank der Datentyp nvarchar (Max) aber ich die folgende Fehlermeldung:

falsche Syntax in der Nähe .....

ich mein Eigentum mit Sonderzeichen einfügen möchten . Was kann ich tun? Danke

+1

Die kurze Antwort ist, ändern 'VALUES ('" + ' zu 'VALUES (N '" +' – mjwills

+3

Mögliche Duplikate von [Was sind gute Möglichkeiten, SQL-Injektion zu verhindern?] (https://stackoverflow.com/questions/14376473/what-are-good-ways-to-prevent-sql -Injektion) – mjwills

Antwort

5

Parametrieren Sie Ihren Einsatz. Neben gewinnt die Fähigkeit, Strings mit beliebigen Zeichen einzufügen, die innerhalb nvarchar gültig sind, werden Sie auch ein großes Sicherheitsproblem beheben, indem ein Potential sql injection attack vermeiden:

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