Maison > Java > javaDidacticiel > Comment utiliser efficacement le caractère générique \'J'aime\' avec des instructions préparées ?

Comment utiliser efficacement le caractère générique \'J'aime\' avec des instructions préparées ?

Linda Hamilton
Libérer: 2024-11-17 14:29:02
original
816 Les gens l'ont consulté

How to use the

Utilisation du caractère générique "like" dans l'instruction préparée

Les instructions préparées offrent un moyen efficace d'exécuter des requêtes SQL en empêchant les attaques par injection SQL et en améliorant les performances . Cependant, l'intégration du caractère générique "J'aime" avec les instructions préparées peut être un peu délicate.

Considérez la requête suivante qui recherche des lignes dans la table "analyse" en fonction d'un mot-clé :

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

Pour utiliser le caractère générique "J'aime" avec cette requête, vous devez l'inclure dans la valeur liée au paramètre de l'instruction préparée. Ajouter simplement "keyword%" à pstmt.setString(1, notes) ne suffira pas.

Au lieu de cela, vous pouvez implémenter un préfixe, un suffixe ou une correspondance globale en fonction de vos besoins :

  • Correspondance de préfixe : La correspondance de préfixe recherche les lignes commençant par le mot-clé. Pour y parvenir avec votre requête, utilisez le code suivant :
notes = notes
    .replace("!", "!!")
    .replace("%", "!%")
    .replace("_", "!_")
    .replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");
Copier après la connexion
  • Correspondance de suffixe : Recherches de correspondance de suffixe pour les lignes qui se terminent par le mot-clé. Pour implémenter cela, modifiez le code comme suit :
pstmt.setString(1, "%" + notes);
Copier après la connexion
  • Correspondance globale : La correspondance globale recherche les lignes contenant le mot-clé n'importe où dans la valeur de la colonne. Pour effectuer une correspondance globale, utilisez le code suivant :
pstmt.setString(1, "%" + notes + "%");
Copier après la connexion

N'oubliez pas d'échapper les caractères spéciaux dans la chaîne "notes" à l'aide d'une barre oblique () pour éviter qu'ils n'interfèrent avec le caractère générique "j'aime". recherche.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal