2009-03-11 11 views

Antwort

31

Sie sollten einen Parameter wie in werden:

SQLiteCommand cmd = _connection.CreateCommand(); 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = "SELECT * FROM MyTable WHERE MyColumn = @parameter"; 
cmd.Parameters.Add(new SQLiteParameter("@parameter", textfield)); 
SQLiteDataReader reader = cmd.ExecuteReader(); 

Mit einem parametrisierte SQL werden alle Eingabewerte entkommen und von SQL-Injection-Angriffe schützen Ihnen zu helfen.

+0

Was kann ich tun, wenn ich mehr params habe? Schreibe ich cmd.CommandText =“ insert ... @ parameter ... @parameter "; cmd.Parameters.Add (...); cmd.Parameters.Add (...);? –

+0

Ja, es sollte auch eine AddRange-Methode verfügbar sein, über die Sie ein Array übergeben können Parameter, die den params im sql statemenet entsprechen –

+0

Sie können Parameter aufrufen.Fügen Sie mehrere Male genau so ein, wie Sie gefragt haben, oder verwenden Sie die Parameter.AddRange, die ein Array von Parametern akzeptiert – bstoney

0

Sie können auch alle Apostroph Begrenzungszeichen mit Zweifeln einfache Anführungszeichen (nicht „) ersetzen.

sql = sql.Replace("'","''"); 
+2

Diese Methode ist nicht re empfohlen, kann es zu seltsamen Bugs führen. – Palani

+0

Nicht unbedingt. Wenn Sie Ihre SQL erstellen und den letzten Schritt ersetzen, sollte alles gut sein. Arbeitete jahrelang ohne Probleme. Ich benutze jetzt die Anwendungsblöcke, also spielt es keine Rolle. :) – klkitchens

+0

Diese Methode ist gut, wenn Sie einen SQL-Safe erstellen müssen, um in eine Textdatei oder ähnliches zu speichern. –