PDA

View Full Version : [Java] Query SQL con dati di una FORM Html


sbarabozzy
25-06-2006, 13:53
Ciao a tutti,
ho un problema relativo a Java.
Cercherò di spiegarvi la mia situazione: sto lavorando a un piccolo progetto che permette la gestione online di una biblioteca. Per tale progetto uso Html, Servlet e JSP.
Il problema è relativo alla fase di ricerca di un libro: l'utente riempie i campi di una form (titolo libro, autore, anno edizione, editore e genere del libro), questi dati vengono inviati a una servlet la quale effettua la connessione al DB ed effettua la query. Se io imponessi all'utente di riempire per forza TUTTI i campi (magari con uno script javascript) della form, il problema non ci sarebbe, in quanto potrei creare un oggetto "preparedStatement" in cui sostituire volta per volta i valori con quelli inseriti nella form.
Nel mio caso però DEVO lasciare la possibilità all'utente di riempire i campi che vuole, lasciandone alcuni vuoti (anche tutti volendo, in questo caso restituirei tutti i libri presenti nella biblioteca). In questo modo ogni volta potrà variare IL NUMERO di parametri della clausola "where" della query sql (fortunatamente effettuo la ricerca su una sola tabella, non devo fare alcun join, quindi la query è del tipo SELECT * FROM LIBRI WHERE ATTR1=valore AND ATTR2=valore AND...ATTRn=valore). Ovviamente non posso più usare una "preparedStatement" in quanto se l'utente lascia alcuni campi vuoti nella form, otterrei un "null" come risultato della request.getParameter("nome_del_campo_della_form")...
Devo per forza gestire da codice tutte le possibili combinazioni (ovvero, titolo e autore riempiti e gli altri no, solo titolo riempito, nessun campo riempito, solo anno edizione riempito, etc etc etc) o c'è un modo "più rapido" per modificare dinamicamente la stringa di query in base al numero di parametri effettivi?

Grazie in anticipo a tutti.

sbarabozzy
27-06-2006, 09:22
Proprio nessuno??? :(

ally
27-06-2006, 13:15
...ciao...

...basta effettuare un piccolo controllo sulle variabili del form...

...e feedare la qyery string di conseguenza...

if (!form.getTitolo().equals(""))
query += " and titolo = ' " + form.getTitolo() + "'";

...ciao...