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

Caractères génériques dans Java PreparedStatements

Vous mettez le % dans la variable liée. Alors vous faites

   stmt.setString(1, "%" + likeSanitize(title) + "%");
   stmt.setString(2, "%" + likeSanitize(artist) + "%");

Vous devez ajouter ESCAPE '!' pour vous permettre d'échapper aux caractères spéciaux qui comptent pour LIKE dans vos entrées.

Avant d'utiliser titre ou artiste vous devez les nettoyer (comme indiqué ci-dessus) en échappant des caractères spéciaux ( ! , % , _ , et [ ) avec une méthode comme celle-ci :

public static String likeSanitize(String input) {
    return input
       .replace("!", "!!")
       .replace("%", "!%")
       .replace("_", "!_")
       .replace("[", "![");
}