2010-12-07 2 views
1

Ich habe einig Code, gespeicherte Prozedur erstellt und es auf SQL-DB, auf dem Parameters Dateinamen senden, eine der Dateien umfasst das Zeichen‘wie ‚mit‘ ‚zu ersetzen, in C#

Ich versuche 'mit ‚‘ in C# ohne Glück zu ersetzen,

Jede mögliche Hilfe,

+11

Verwenden Sie parametrisierte SQL! –

+0

Veröffentlichen Sie etwas von Ihrem Code. Wir können Ihnen nicht helfen, wenn wir nicht wissen, was Sie bisher versucht haben. –

+1

Sie sollten suchen für eine gespeicherte Prozedurlösung –

Antwort

5

Kurze Antwort:

String myString = "'foo'"; 
myString = mySTring.Replace("'", "''"); 

ich bin bereit, Sie zu wetten, sind fordern die gleiche Methode ersetzen, aber nicht Speichern der Ergebnisse zurück in die ursprüngliche Zeichenfolge. Vergessen Sie nicht, Strings sind unveränderlich. Die Methoden in einer Zeichenfolge manipulieren die Zeichenfolge selbst nicht, sondern geben die geänderte Zeichenfolge zurück.

Lange Antwort: Sie sollten Parameter in Ihrer Abfrage anstelle von dem, was Sie versuchen, verwenden. Durch das Parametrisieren Ihrer Parameter wird Ihr Code viel sauberer, da die oben genannten Ersetzungsaufrufe entfallen. Es macht auch Ihre Anfragen sicherer, indem es Injektionsangriffe/-fehler verhindert.

SqlCommand query = myConnection.CreateCommand(); 
query.CommandText = "SELECT * FROM myTable where name = @name"; 
query.Parameters.Add(new SqlParameter("name", "john")); 
+2

+1 - für usi ng parametrisierte Abfragen ... Würdest gerne sehen, warum du besser bist. – Oded

+0

Fertig ... glücklich @Oded? –

+0

@Oded, Bobby Tables bietet Kurse an, warum sie besser sind. http://xkcd.com/327/ –

0

Zeichenfolge fileName = ""; filename = fileName.Replace ("'", "\" ");

0

how to insert data if it contain apostrophe?

ähnliche Frage wurde vor gefragt Werfen Sie einen Blick

Dont ersetzen nur die..", Mit etwas, dann wird es ein Ziel der SQL-Injektion sein. :(

+0

Danke, ich habe ein ähnliches Problem erlebt –