2009-12-13 3 views
0

Je veux générer des requêtes mais je ne vais pas l'exécuter. Juste en montrant la requête de texte après que tout a été échappé. Je ne peux pas comprendre comment obtenir la valeur d'évasion. J'ai cherché le navigateur d'objet pour échapper en espérant trouver une fonction mais je didnt. J'ai alors eu une idée de longue date que ce (string)new SQLiteParameter("@dummy", text).Value peut fonctionner mais c'est trop longhot et cela n'a pas fonctionné. Alors, comment puis-je obtenir le texte échappé?Comment échapper sql et obtenir le texte au lieu de le mettre dans une requête?

+0

Je ne comprends pas exactement ce que vous voulez réaliser mais Sqlite est beaucoup plus rapide lorsque vous utilisez des requêtes paramétrées au lieu de requêtes concaténées. – tuinstoel

Répondre

1

Vous devrez remplacer manuellement les guillemets et les barres obliques inverses dans vos chaînes.

Je ne suis pas un expert dans la syntaxe SQLite, mais ce qui suit devrait fonctionner:

text = text.Replace("'", "''"); //Replace single quotes (') with pairs of single quotes ('') 

Cependant, vous devez utiliser des paramètres chaque fois que vous le pouvez. En plus d'être plus sécurisé contre l'injection SQL, l'utilisation de paramètres vous permet également de bénéficier de la mise en cache de plan de requête, accélérant ainsi l'exécution de vos requêtes.

+0

Cela ne fonctionnera probablement pas avec SQLLite, l'échappement est un caractère valide et pour afficher une citation que vous utilisez ''. –

+0

@Yuriy: corrigé; Merci. – SLaks

3

Si vous voulez dire des guillemets d'échappement, alors query.Replace("'", "''"). Avec les paramètres, la requête est envoyée telle quelle et les paramètres sont envoyés séparément à votre base de données.