Escaping-Werte in SQL-Abfragen (C # mit SQL-Connector)

7

Ich weiß, dass ich die Parameter verwenden kann, aber was ist der richtige Weg, um String-Sequenzen zu entkommen? Die Abfrage könnte so aussehen:

%Vor%

Ich bin nur neugierig, will nur wissen:)

BEARBEITEN: Aber was ist damit? "CREATE TABLE" + String ".... Parameter können hier nicht verwendet werden!

    
Snake 07.01.2010, 12:56
quelle

5 Antworten

15

Wenn Sie Datenbankoperationen durchführen müssen, z. B. Tabellen erstellen, sollten Sie SQL Server-Verwaltungsobjekte verwenden anstatt SQL-Strings auszuführen.

Für CRUD-Operationen ist der Parameter absolut der einzig wahre Pfad.

UPDATE: Es scheint, dass die MySQL-Client-Bibliothek eine Hilfsmethode für diese unklare Aufgabe enthält. Sie können MySqlHelper.EscapeString (Zeichenfolge) aufrufen.

    
Jamie Ide 07.01.2010, 13:26
quelle
12

Der richtige Weg ist um Parameter zu verwenden.

"Sagt einfach Nein" zu versuchen, die Flucht selbst zu machen - es ist viel zu leicht, sich zu irren. Warum glaubst du, dass wollen , sie manuell zu entkommen, anstatt Parameter zu verwenden?

    
Jon Skeet 07.01.2010 12:58
quelle
6

Wenn Sie wirklich, wirklich, wirklich die Flucht selber machen müssen (von der es in Ihrem Beispiel keine Zeichen gibt):

%Vor%     
Guffa 07.01.2010 13:08
quelle
1

Ich denke, das einzige, was Sie tun müssen, ist value = value.Replace("'", "''")

Natürlich sollten Sie das nicht tun, aber Sie wissen das.

Bearbeiten: Scheinbar ist das alles falsch für MySQL. Es sollte jedoch für PostgreSQL, MS SQL und Oracle funktionieren.

    
erikkallen 07.01.2010 14:02
quelle
0

Verwenden Sie stattdessen commnd-Parameter. Es kümmert sich darum, sich selbst zu entkommen. Es ist die Lösung auch gegen SQL-Injektionen.

    
GGSoft 03.02.2018 09:20
quelle

Tags und Links