2009-03-11 8 views

Répondre

31

Vous devez utiliser un paramètre comme dans:

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(); 

L'utilisation d'un SQL paramétrisée échappera toutes les valeurs d'entrée et de vous protéger des attaques par injection SQL.

+0

Que dois-je faire si je params plusieurs? Dois-je écrire cmd.CommandText = » insérer ... @parameter ... @parameter "; cmd.Parameters.Add (...); cmd.Parameters.Add (...);? –

+0

Oui, il devrait aussi y avoir une méthode AddRange disponible où vous pouvez passer un tableau de . params qui correspondent aux params dans la statemenet sql –

+0

vous pouvez appeler Parameters.Add plusieurs fois comme vous avez demandé ou utiliser le Parameters.AddRange qui accepte un tableau de paramètres – bstoney

0

Vous pouvez également remplacer tous les délimiteurs guillemets simples avec doute des guillemets simples (non «).

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

Cette méthode ne re recommandé, Cela peut conduire à des bugs étranges. – Palani

+0

Pas nécessairement. Si vous construisez votre SQL et faites le Remplacer la dernière étape, tout devrait être bon. A travaillé pendant des années sans problèmes. J'utilise maintenant les blocs d'application, donc cela n'a pas d'importance. :) – klkitchens

+0

cette méthode est bonne si vous avez besoin de créer un coffre-fort SQL à vider dans un fichier texte ou autre. –