Escape-Sonderzeichen in MySQL mit C# und ASP.Net
Habe ich eine ASP.Net web-Seite mit einer MySQL-back-end. Die blog-Inhalte auf dieser Website ist aufgefüllt, die aus der MySQL-Datenbank. Wann immer ich wollte einen Blogeintrag schreiben, ich würde öffnen Sie die MySQL Workbench mit der rechten Maustaste auf die Tabelle und wählen Sie "Daten Bearbeiten" und dann weiter zu geben mein Eintrag. Gut, jetzt arbeite ich auf ein C# - Anwendung, die mir erlauben wird, zu blog-Eintrag schreiben, so dass ich nicht haben, um open workbench jedes mal. So weit ist alles funktioniert Super bis auf ein kleines Problem: Sonderzeichen.
==Beispiel==
In textBox1 Schreibe ich die folgenden,
Kann ich dir sagen, dass das nicht funktionieren, weil der Apostroph
Mein code sieht so aus (vielleicht ein wenig off, da ich dies Schreibe aus dem Gedächtnis, aber es funktioniert):
MySQLCommand cmd = new MySQLCommand("",conn);
cmd.CommandText = "INSERT INTO blogEntry (entryText) VALUE (" + textBox1.text + ");";
...
Das funktioniert und der text ist eingefügt in meine Tabelle. Aber wenn ich ziehen Sie es wieder aus und binden Sie es an ein DataGridView, ich sehe dies:
Kann ich dir sagen, dass es
und das ist es (oder ich sehe eine seltsame Formatierung oder etwas).
==SUMMARY==
Ich weiß, es hat etwas zu tun mit dem Apostroph nicht entgangen. Also meine Fragen sind:
1) In C# gibt es eine Möglichkeit, gehen durch den gesamten text in textBox1 und ersetzen alle Sonderzeichen ( '), escapes ( \ " ), so dass Sie korrekt angezeigt, wenn aus der Datenbank abgerufen?
2) habe ich gelesen, einige Menschen mithilfe von gespeicherten Prozeduren oder Parameter in der INSERT-Anweisungen. Würde, dass die Arbeit für mich und wie genau würde ich das tun (ich habe einige Probleme bei der Suche Beispiele für meinen speziellen Fall)?
Vielen Dank für jede Hilfe, Ideen, links, etc.
InformationsquelleAutor Tom | 2011-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre es besser, verwenden Sie eine parametrisierte Abfrage. So würden Sie nicht brauchen, um escape-Zeichen, und es würde (noch wichtiger) helfen, verhindern, dass eine SQL-injection-Angriff.
Dann etwas entlang der Linien von:
InformationsquelleAutor Mark Wilkins
Wenn Sie Mysql-client-Bibliothek verwenden, können Sie diese Funktionen
In Ihrem Fall:
Danke, Mann, es funktionierte für mich!
es funktioniert für mich, auch Dank der Er Rai.....
InformationsquelleAutor Sujit Rai
Können Sie den Regulären Ausdruck zu ersetzen, Sonderzeichen. Auch .Net bieten RegEx-Klasse die Escape-Methode zu ersetzen spezielle Zeichen, die aus einer minimalen Menge von Zeichen (\, *, +, ?, |, {, [, (,), ^, $,., #, und Leerzeichen), indem Sie Sie mit Ihrem escape-codes.
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape.aspx
InformationsquelleAutor
Hier ist ein einfacher Weg, um zu entkommen, alle unerwünschten Zeichen. Nehmen wir an, die Zeichen innerhalb der geschweiften Klammern werden die Zeichen, die Sie vermeiden möchten.
Trim(char[]) vermeiden Sie alle unerwünschten Zeichen, aber es hat seine eigenen Nachteile, wie Sie nicht verwenden können, das Zeichen "O" oder "R", obwohl Sie wollen, Sie zu benutzen, aber ich denke, man kann einige Vorkehrungen zu treffen.
Oh! meine schlechte dude, ich war nur spät arbeiten, und ich wollte nicht gehen Sie durch alle den text, den ich nur den Titel Lesen und andere zufällige Antworten, ich habe nicht gemeint, jemand irrezuführen..
InformationsquelleAutor Rock King Kirant
Sollten Sie der Verwendung von parametrisierten SQL-mindestens, sonst werden Ihre versuche, die Desinfektion der Eingang könnte, lassen Sie offen für SQL-Injection.
Prüfen Sie hier.
Etwas wie:
InformationsquelleAutor Forgotten Semicolon
Würden Sie absolut wollen, um die Parameter zu verwenden in diesem Fall. Es wird vermieden, der austretende Problem und auch Schutz gegen SQL-injection-Angriffe (zu dem dieser code ist derzeit anfällig).
Parameter verwenden, würde der code so Aussehen:
Dann danach, Sie würde, initialisieren Sie die parameter. So etwas wie:
InformationsquelleAutor Adam Price