Comment échapper les guillemets simples pour SQL insert...lorsque la chaîne de caractères à insérer dans un générées par l'utilisateur variable
Je suis la construction d'un insert de commande à exécuter à l'aide de jdbc. Elle est en partie pour concaténer une générées par l'utilisateur de la chaîne...tout cela fonctionne jusqu'à ce que l'utilisateur utilise une chaîne comme ceci:
un'bcd
String userString="a'bcd";
String insertTableSQL = "INSERT INTO myTable "
+ "(insertColumn) "
+ "VALUES("
+"'"+userString+"'"
+")";
statement.executeUpdate(insertTableSQL);
OriginalL'auteur user947659 | 2014-10-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire ci-dessous:
Utiliser le PreparedStatement classe. (Recommandé)
Échapper les guillemets simples.
En SQL, les guillemets simples seront échappés par l'utilisation de double guillemets simples.
'
-->''
OriginalL'auteur Nishanthi Grashia
Vous pouvez utiliser StringEscapeUtils de la Apache Commons Lang de la bibliothèque.
En utilisant cela, vous pouvez échapper les caractères de l'html, du xml,
sql, etc. Regarder pour la méthodeescapeXXX
pour votre but. Pour référence: Quand j'en ai besoin pour échapper à la chaîne Html?remarque:
escapeSql
a été supprimé dans Apache Commons Lang 3 (voir La Migration StringEscapeUtils.escapeSql de communes.lang les références https://commons.apache.org/proper/commons-lang/article3_0.html#StringEscapeUtils.escapeSql)Par exemple:
D'entrée:
De sortie:
StringEscapeUtils.escapeSql est amortis.
Cette approche ne fonctionne que si vous avez l'intention d'utiliser l'entrée comme la sortie HTML plus tard. À propos de la dépréciation de la v3.6 de commons-lang est toujours là et fonctionne très bien avec org.apache.commons.texte.
OriginalL'auteur Divya
Voici une autre possibilité:
Utiliser un natif Android méthode conçue pour exactement cet effet:
Voici la documentation en ligne:
Le principal avantage de l'utilisation de cette méthode, à mon avis, est l'auto-documentation, car le nom de la méthode.
OriginalL'auteur leoneboaventura