192 votes

Utilisation d'un caractère générique "like" dans une instruction préparée

Je suis en utilisant des requêtes préparées pour exécuter des requêtes de base de données mysql. Et je veux implémenter une fonctionnalité de recherche basée sur un mot-clé de toutes sortes.

Pour cela j'ai besoin d'utiliser LIKE mot-clé, que beaucoup je sais. Et j'ai également utilisé les déclarations préparées avant, mais je ne sais pas comment l'utiliser avec LIKE , car à partir du code suivant où puis-je ajouter de la 'keyword%'?

Puis-je l'utiliser directement dans l' pstmt.setString(1, notes) comme (1, notes+"%") ou quelque chose comme ça. Je vois beaucoup de messages à ce sujet sur le web, mais pas de bonne réponse, n'importe où.

PreparedStatement pstmt = con.prepareStatement(
      "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();

309voto

BalusC Points 498232

Vous devez le définir dans la valeur elle-même et non dans la chaîne SQL de l'instruction préparée.

Donc, cela devrait faire pour une correspondance préfixe:

 PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes + "%");
 

ou une correspondance de suffixe:

 pstmt.setString(1, "%" + notes);
 

ou un match global:

 pstmt.setString(1, "%" + notes + "%");
 

2voto

 String post_match=notes+"%";
String pre_match="%"+notes;
String full="%"+notes+"%";

PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes like ?");
 

Si vous voulez une correspondance de préfixe

 pstmt.setString(1, pre_match);
 

Si vous voulez une correspondance postfixée

 pstmt.setString(1, post_match);
 

Quelque chose entre les moyens

 pstmt.setString(1, full);
 

Essaye le. Ça va marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X