Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Platzhalter in Java PreparedStatements

Sie setzen das % in die gebundene Variable. Also tust du es

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

Sie sollten ESCAPE '!' hinzufügen damit Sie Sonderzeichen, die für LIKE von Bedeutung sind, maskieren können in Ihre Eingaben.

Vor der Verwendung von title oder Künstler Sie sollten sie bereinigen (wie oben gezeigt), indem Sie Sonderzeichen maskieren (! , % , _ , und [ ) mit einer Methode wie dieser:

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