Ciao a tutti. Ho provato già senza successo (errore mio) a postare una richista su questo forum, spero che questa volta sia più fortunato![]()
Premetto di essere più che inesperto in programmazione, quello che faccio lo faccio improvvisando e chiedo per questo scusa se magari farò domande banali.
Il mio problema è questo: avrei bisogno di estrarre, tramite una pagina jsp, i dati da un database mysql facendo una ricerca sulla base di due parametri o, come seconda scelta, di un solo parametro. La query dovrebbe darmi tutti i dati rispondenti alla ricerca effettuata, indipendentemente da quanti questi siano. Il problema è che la pagina che ho scritto fino ad ora mi restituisce sempre un solo risultato, anche se i dati in tabella rispondenti alla ricerca effettuata sono molti di più. Potete aiutarmi a capire cosa sbaglio???
Ecco la pagina in questione:
codice:<% String citta = new String(); citta = request.getParameter("citta"); String attivita = new String(); attivita = request.getParameter("attivita"); Connection dbconn = null; // carica il file di classe del driver // per il collegamento al database Class.forName("com.mysql.jdbc.Driver"); // apre la connessione con il database "esame" dbconn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=admin"); // manda in esecuzione l'istruzione SQL Statement statement = dbconn.createStatement(); String select_query = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "' and opinioni.attivita = '" + attivita + "'"); ResultSet rs = statement.executeQuery(select_query); String result = ""; String result1 = ""; String result2 = ""; String result3 = ""; String result4 = ""; String result5 = ""; String result6 = ""; String result7 = ""; if (rs.next()){ result = rs.getString("attivita"); result1 = rs.getString("citta"); result2 = rs.getString("tipo"); result3 = rs.getString("commento"); } else { String select_query1 = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "'"); ResultSet rs1 = statement.executeQuery(select_query1); if (rs1.next()){ result4 = rs1.getString("attivita"); result5 = rs1.getString("citta"); result6 = rs1.getString("tipo"); result7 = rs1.getString("commento"); } else { out.println("Nessuna recensione trovata"); } } //out.println(result); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <p align="center"></p> <p align="center"></p> <p align="center"><font color="#FFFFFF" face="Arial Black" size="4">DESCRIZIONE AUTO</font></p> <p align="center"><td><textarea name="commento" rows="8" cols="37"><%=result3%> <%=result1%> <%=result2%> <%=result%></textarea></td></tr> <p align="center"><td><textarea name="commento" rows="8" cols="37"><%=result4%><%=result5%><%=result6%><%=result7%> </textarea></td></tr> </p> </p> </p> </p> </p> </p> </p> </body> </body> </html>

Rispondi quotando
... Sono un po' arrugginito con Java, ma credo che Joe Taras abbia detto bene, prova a mettere un ciclo per la lettura di ResultSet anziché un if. Questo perché con if viene eseguita una sola lettura del risultato, dopodiché il programma passa oltre. Dunque verrà stampato solo il primo risultato. Con un ciclo while invece, la lettura dei risultati (oggetto ResultSet) continua fino a quando ci sono dati:
...
