J'ai remarqué que lorsque j'utilise un PreparedStatement
, il ne semble pas échapper à certains caractères génériques comme '%' ou '_'. Je sais que ceux-ci peuvent être échappés dans MySql en utilisant un backslash. Cela m'a fait me demander, quels personnages vont échapper à PreparedStatement
?Quels personnages seront PreparedStatement échapper?
Répondre
PreparedStatement
n'échappe à rien - il repose sur la prise en charge de la base de données pour les instructions précompilées.
Cela signifie que PreparedStatement
ne remplace jamais ?
s pour les valeurs de paramètre afin de former une chaîne de requête littérale. Au lieu de cela, il envoie une chaîne de requête avec des espaces réservés à la base de données et utilise le support de base de données pour lier les paramètres de requête (cependant, cela peut dépendre de l'implémentation du pilote JDBC).
Dans mon test, il échappe les guillemets simples, \r
, \t
, \n
et ainsi de suite. Cela fonctionne plutôt bien:
String sql = "INSERT INTO test(title) VALUES(?)";
PreparedStatement stmt = con.prepareStatement(sql);
String title = "I'm a \"student\" in a \t (university) \r\n";
stmt.setString(1, title);
stmt.executeUpdate();
Cela peut être spécifique à votre pilote/db. Comme mentionné plus haut, la plupart n'échappent pas automatiquement à l'entrée. – Leigh
- 1. Bash: échapper personnages
- 2. quels sont les appareils seront listés
- 3. PreparedStatement setNull (..)
- 4. Comment échapper aux personnages dans le titre d'un marqueur dans Google Maps?
- 5. Vim regexps du point de vue de perl: quels caractères spéciaux pour échapper avec backslash
- 6. Réutilisation d'un PreparedStatement
- 7. Requête de PreparedStatement
- 8. PreparedStatement jette MySQLSyntaxErrorException
- 9. PreparedStatement avec Statement.RETURN_GENERATED_KEYS
- 10. Java PreparedStatement Syntaxe
- 11. System.IO.StreamWrite et personnages espagnols
- 12. stri_replace déconner des personnages
- 13. Comment échapper des caractères japonais?
- 14. Quels caractères dois-je échapper/désinfecter pour les noms de fichiers?
- 15. Quels caractères dois-je échapper dans une regex pré-compilée Perl?
- 16. Quels sont ces «personnages voyous» étranges à la fin de mon NSString?
- 17. Quels sont les personnages étranges dans le XSD téléchargés par svcutil.exe
- 18. ResultSet vide après l'exécution PreparedStatement
- 19. Comment fonctionne PreparedStatement de Java?
- 20. System.Net.Uri avec des personnages urlencoded
- 21. Personnages spéciaux sur la console
- 22. échapper exactement ce que dans javascript
- 23. Quels champs seront interrogés lors de l'utilisation de LINQ to SQL lier à un gridview?
- 24. Appelle à la fonction quels appels s'affirment seront supprimés dans Release ver d'un programme?
- 25. types pBoard seront dépréciés
- 26. javascript // échapper
- 27. text reStructured - échapper un titre?
- 28. PreparedStatement ne pas retourner ordonné ResultSet
- 29. Informix JDBC PreparedStatement MISE À JOUR Multiset
- 30. Problèmes avec Date, preparedStatement, JDBC et PostgreSQL
Intéressant, à quoi ressemble ce support pour MySql? – stevebot
MySql supporte les instructions préparées de la même manière côté serveur. L'apparence de votre code dépend du pilote que vous utilisez. –
Je crois que de nombreux pilotes insèrent effectivement du texte d'argument échappé dans le texte SQL. –