PDA

Visualizza versione completa : [Java] - Problemi con un if...else if...else


Alhazred
07-03-2008, 00.07.48
Da una form in una jsp posso inserire autore e/o titolo di un libro in modo tale che poi mi venga mostrata una tabella con i risultati.
Funziona tutto correttamente se inserisco il nome dell'autore, oppure il titolo del libro (anche se sono sbagliati il tutto viene gestito correttamente), non funziona invece se metto entrambi o se non metto niente.
Spiego cosa succede:
- se metto sia autore che titolo: viene comunque eseguita la query che mi ritorna l'elenco di tutti i libri di quell'autore nel database invece del solo libro specifico
- se non metto niente: ottengo una pagina vuota invece della errsearch.jsp (che ho visualizzato da parte ed è corretta)

Questo è il codice che ho scritto, cosa c'è che non va?

String _autore = "";
String _titolo = "";
String address = "";
...
Statement stmt = dbconn.createStatement();
ResultSet rs = null;
_autore = request.getParameter("autore");
_titolo = request.getParameter("titolo");
if(!_autore.equals("") && !_titolo.equals("")) { //se entrambi i campi del form non erano vuoti
//cerca nel DB la corrispondenza sia per autore che per titolo
rs = stmt.executeQuery("Select ISBN, authors, title, summary FROM book WHERE authors='"+_autore+"' AND title='"+_titolo+"';");
}
else if(!_autore.equals("")) { //se il campo autore non era vuoto
//cerca nel DB la corrispondenza solo per autore
rs = stmt.executeQuery("Select ISBN, authors, title, summary FROM book WHERE authors='"+_autore+"';");
}
else if(!_titolo.equals("")) { //se il campo titolo non era vuoto
//cerca nel DB la corrispondenza solo per titolo
rs = stmt.executeQuery("Select ISBN, authors, title, summary FROM book WHERE title='"+_titolo+"';");
}
else { //se il campo autore e il campo titolo erano vuoti
//non bisogna cercare niente, c'è stato un errore nell'inserimento
address="/errsearch.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request, response);
}
if(rs.next()==false){ //se non ho trovato nessuna corrispondenza nel DB
address="/noresult.jsp"; //vado alla pagina che notifica l'assenza del libro
}
else { //se è stata trovata qualche corrispondenza
address="/searchresult.jsp"; //vado alla pagina che mostrerà i risultati della ricerca
}