Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment capturer/encoder un caractère spécial pour SQL Server dans une application Java ?

Je suppose que vous construisez le SQL d'une manière comme

String sql = "Select Column from tab where column='" + StringParm + "'"; 

Ou quelque chose comme ça ? Si vous faites cela, vous êtes ouvert à toutes sortes d'exploits et vous verrez également un comportement comme vous le décrivez, où la chaîne résultante n'est plus valide en SQL. Vous devez d'abord échapper le paramètre fourni par l'utilisateur.

La meilleure solution est d'utiliser PreparedStatements, donc vous le faites

Statement stmt = conn.prepareStatement("Select Column from tab where column=?");
stmt.setString(1,StringParam);

Je ne vois cependant aucun moyen rapide de résoudre votre problème sans modifier le code Java, sauf peut-être échapper/désinfecter l'entrée avant qu'elle n'atteigne votre code (par exemple, javascript si vous êtes une application Web)