Fig. 1 - Vogliamo visualizzare book_id, autore e titolo dalla tabella books del database shop Fig. 2 - Tabella books select_checkbox.pdf Pag. 1/5 Cozzetto
Fig. 3 - Abbiamo due record in output File index_1.jsp <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <%@page import="java.sql.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>accesso al database Shop</title> </head> <body> <h3>accesso al database Shop</h3> <form name="provafrm" action="${request.requesturi" method="post"> <p>select</p> <p><input type="checkbox" name="book_id" value="book_id" />Book_id<br/> <input type="checkbox" name="author" value="author" />Author <br/> <input type="checkbox" name="title" value="title" />Title <br/> select_checkbox.pdf Pag. 2/5 Cozzetto
<input type="checkbox" name="publisher" value="publisher" />Publisher <br/></p> <p>where <textarea name="condtxt" cols="30" rows="5"></textarea> <p><input type="submit" name="inviabtn" value="invia"/></p> </form> <% // se l'utente ha premuto il tasto inviabtn if (request.getparameter("inviabtn")!=null) { // prepariamo la stringa s con l'elenco // dei campi selezionati interattivamente // dall'utente String s=""; // aggiungo alla fine della stringa s una virgola if (request.getparameter("book_id")!=null) { s=s+request.getparameter("book_id")+","; // analogamente per il campo author if (request.getparameter("author")!=null) { s=s+request.getparameter("author")+","; // analogamente per il campo title if (request.getparameter("title")!=null) { s=s+request.getparameter("title")+","; // il campo publisher è l'ultimo, quindi non aggiungiamo // alcun carattere if (request.getparameter("publisher")!=null) { s=s+request.getparameter("publisher"); // togliamo la virgola aggiunta come ultimo carattere if (!s.equals("")) { if (s.charat(s.length()-1)==',') { s=s.substring(0,s.length()-1); else { // se l'utente non ha selezionato nessun campo // assumiamo s="*" per poter effettuare // una select su tutti i campi s="*"; // fine if // leggiamo la condizione inserita dall'utente String condstr = request.getparameter("condtxt"); select_checkbox.pdf Pag. 3/5 Cozzetto
// se l'utente non ha inserito nulla, vogliamo // che la condizione sia sempre 'true' if (condstr.equals("")) condstr="1"; // prepariamo la SELECT String sql="select "+s+" FROM books WHERE "+condstr; // la visualizziamo per poterla controllare out.println("<p>"+sql+"</p>"); Connection conn = null; Statement st = null; Class.forName("com.mysql.jdbc.Driver"); catch(classnotfoundexception e) { out.println("problemi nel caricamento dei driver"); // fine try-catch conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop? user=root&password=coz123"); catch(sqlexception e) { out.println("problemi nello stabilire la connessione al database"); // fine try-catch // usiamo le due costanti indicate di seguito per poter contare il numero di record del ResultSet st = conn.createstatement(resultset.type_scroll_sensitive, ResultSet.CONCUR_READ_ONLY); // eseguo la query preparata precedentemente ResultSet rs = st.executequery(sql); // ci posizioniamo sull'ultimo record rs.last(); // mi faccio dare la posizione che è anche il num. di record del ResultSet int rowcount = rs.getrow(); if (rowcount==0) { out.println("la query non restituisce risultati"); // sposto il cursore prima del primo record rs.beforefirst(); select_checkbox.pdf Pag. 4/5 Cozzetto
// prepariamo il ResultSetMetaData ResultSetMetaData rsmd = rs.getmetadata(); // troviamo il numero di colonne int numcolonne = rsmd.getcolumncount(); out.println("<table border='1'><tr>"); // prepariamo i nomi delle colonne for (int i=0; i<numcolonne; i++) { out.println("<td>"+rsmd.getcolumnname(i+1)+"</td>"); out.println("</tr><tr>"); // visualizziamo i valori delle colonne while (rs.next()) { for (int i=0; i<numcolonne; i++) { out.println("<td>"+rs.getobject(i+1)+"</td>"); out.println("</tr>"); out.println("</table>"); out.println("<br/>la query restituisce "+rowcount+" record"); rs.close(); catch(sqlexception e) { out.println("errore nell'esecuzione della query"); // fine try-catch st.close(); conn.close(); catch(sqlexception e) { out.println("impossibile effettuare la chiusura della connessione"); // fine try-catch // fine if %> </body> </html> select_checkbox.pdf Pag. 5/5 Cozzetto