2009-06-03 31 views
0

Ich versuche, Datencontent.executeCommand ("Zeichenfolge") in C# zu tun. Wenn ich versuche, Insertion zu tun, habe ich Probleme, weil jedes Mal, wenn es ein "Wort" in einem Eintrag gibt, ich denke, dass es eine neue Spalte ist, und ich eine Ausnahme ausspreche.Reguläre Ausdrücke in C#

Wie drehen Sie die 'word' in ''word''?

+0

Needs mehr Kontext. Sende deinen Code. – Juliet

Antwort

1

Sie können Zeichen in SQL-Zeichenfolgen mit \ umwandeln. Ich glaube jedoch, dass die beste Lösung für Ihr Problem (und eine Reihe anderer, auf die Sie später noch eingehen werden, wenn Sie es nicht von Anfang an so machen) SQL-Parameter sind.

0

Ich mag würden Sie in die wunderbare Welt von SQL-Injection begrüßen, wo die Nutzer der Datenbank durch die Ausführung bösartiger SQL aufgrund Sie Ausführen beliebigen Strings kapern kann ;-)

Sie sollten wirklich Parameter verwenden (wie die in System.Data.SqlClient) oder verwenden Sie die LINQ-Datenmodellobjekte, die für Sie generiert wurden, legen Sie Werte für diese fest und senden Sie Ihre Änderungen. Lassen Sie die Datenzugriffsebene Ihre Werte ausschließen und schützen Sie sich vor einem Benutzer, der Text mit SQL-Anweisungen wie DELETE * FROM IMPORT_TABLE eingeben könnte.

1

Wie von Tomas und Jason vorgeschlagen, ist es am besten, SQLParameters zu verwenden, um diese Probleme zu vermeiden.

Wenn es jedoch zu viele Änderungen am Code erforderlich und Sie brauchen eine schnelle Lösung, dann würde ich sagen: Sie nicht regex müssen dafür. Sie brauchen nur eine string.replace

string query; 
... 
query.Replace("'", "''"); 

tun, wenn ich Ihre Frage richtig und es ist nur Instanzen von ‚Wort‘ Sie ändern müssen verstanden haben, können Sie tun:

query.Replace("'word'", "''word''"); 
+1

Einverstanden. Ich mache das seit Jahren und vorausgesetzt, dass Sie es überall verwenden, wo Sie selbst Zeichenfolgen in Ihre SQL-Anweisungen eingeben, ist es vollkommen sicher und für das vorliegende Problem ausreichend. – harpo