Bonjour/Bonsoir à tous,
je vous explique la situation :
mon application Web de E-Commerce met à disposition de l'utilisateur un formulaire de recherche afin qu'il puisse retrouver les produits qui l'intéressent...
tous les produits sont stockés en Base de Données (IBM DB2)...
la recherche est effectuée sur les champs name et description de la table ITEMS (il suffit que le mot clé soit dans l'un ou l'autre de ces champs)...
si la requête était traitée dans son ensemble (sans découpage), la requête préparée aurait la forme suivante :
mais évidemment, la saisie de l'utilisateur est "tokenizée", et c'est à partir de là que tout se complique... je dois utiliser les preparedStatement pour effectuer la recherche (et pour parer à tout risque d'injection SQL) et retourner une liste d'objets Items... or, la saisie de l'utilisateur peut très bien comprendre 20 tokens comme un seul...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM AR.ITEMS WHERE LOWER(name) LIKE %?% OR LOWER(description) LIKE %?%
exécuter n requêtes pour n keywords ne me paraît pas être une bonne solution...
savez-vous s'il est possible de n'utiliser qu'une seule requête préparée pour traiter la requête utilisateur et retourner la liste des résultats ?
et si ce n'est pas le cas, quelle est la meilleure solution à ce problème ?
Merci d'avance,
Rolf
Partager