Pagina 1/6 E' assegnato il database books contenente le tabelle authors, publishers, titles, authorisbn trovare la lista dei libri pubblicati da un certo editore (immesso in una casella testuale di un form) SELECT * FROM books.authorisbn INNER JOIN books.authors ON authorisbn.authorid = authors.authorid INNER JOIN books.titles ON authorisbn.isbn = titles.isbn INNER JOIN books.publishers ON titles.publisherid = publishers.publisherid WHERE publishers.publishername like '%${param.editoretxt %' i libri/il libro che costano di più SELECT * FROM titles, publishers WHERE titles.publisherid = publishers.publisherid AND price = (SELECT MAX(price) FROM titles) gli autori dei libri SELECT CONCAT(firstname, " ", lastname) AS authorname FROM authors il libro con isbn assegnato (gli isbn sono caricati in una casella a scorrimento) SELECT * FROM titles, publishers WHERE titles.publisherid = publishers.publisherid AND isbn = '${param.isbncbo' NB Tutte le query sono già assegnate Attività preliminari Il progetto NetBeans include nel file web.xml le informazioni sulla connessione al database <context-param> <param-name> javax.servlet.jsp.jstl.sql.datasource </param-name> <param-value> jdbc:mysql://localhost:3306/books,com.mysql.jdbc.driver,root, </param-value> </context-param>
Pagina 2/6 Ricordarsi inoltre di aggiungere le librerie JSTL (si cerca tra le proprietà del Progetto la voce Libraries) aggiungere i driver del database MySQL Netbeans 5.5 e 6.1: prelevare il file mysql-connector-java-5.1.6.tar.gz all'indirizzo http://dev.mysql.com/downloads/connector/j/5.1.html. Dal file tar.gz estrarre il file mysql-connector-java-5.1.6-bin.jar e copiarlo (o spostarlo) nella cartella lib (da creare) di WEB-INF Netbeans 6.5: i driver sono già inclusi nel pacchetto aggiungere nel codice le direttive taglib (librerie core ed sql almeno) Soluzione primo punto Codice <title>libri pubblicati da un certo editore</title>
Pagina 3/6 <h3>libri pubblicati da un certo editore</h3> <form name="provafrm" action="${request.requesturi" method="get"> Nome editore <input type="text" name="editoretxt"/> <input type="submit" name="inviabtn" value="invia"/> </form> <c:if test="${!empty param.inviabtn"> SELECT * FROM books.authorisbn INNER JOIN books.authors ON authorisbn.authorid = authors.authorid INNER JOIN books.titles ON authorisbn.isbn = titles.isbn INNER JOIN books.publishers ON titles.publisherid = publishers.publisherid WHERE publishers.publishername like '%${param.editoretxt %' <c:choose> <c:when test="${result.rowcount>0"> <c:out value="${row.isbn"/> <c:out value="${row.title"/> <c:out value="${row.publishername"/> <c:out value="${row.editionnumber"/> <br/> </c:when> <c:otherwise> Non ci sono libri pubblicati da <c:out value="${param.editoretxt" /> </c:otherwise> </c:choose> </c:if> Soluzione secondo punto
Pagina 4/6 <title>libri che costano di più</title> <h3>libri che costano di più</h3> SELECT * FROM titles, publishers WHERE titles.publisherid = publishers.publisherid AND price = (SELECT MAX(price) FROM titles) <c:out value="${row.isbn"/> <c:out value="${row.title"/> <c:out value="$ {row.publishername"/> <c:out value="${row.price"/><br/> Soluzione terzo punto Codice <title>autori</title>
Pagina 5/6 <h3>autori</h3> SELECT CONCAT(firstname, " ", lastname) AS authorname FROM authors <c:out value="${row.authorname"/> <br/> Soluzione quarto punto Codice <title>libro con ISBN assegnato</title>
Pagina 6/6 <h3>libro con ISBN assegnato</h3> SELECT isbn FROM titles <form name="provafrm" action="${request.requesturi" method="get"> ISBN <select name="isbncbo"> <option><c:out value="${row.isbn"/></option> </select> <input type="submit" name="inviabtn" value="invia"/> </form> <c:if test="${!empty param.inviabtn"> SELECT * FROM titles, publishers WHERE titles.publisherid = publishers.publisherid AND isbn = '${param.isbncbo' <c:choose> <c:when test="${result.rowcount>0"> <c:set var="row" value="${result.rows[0]"/> <c:out value="${row.isbn"/> <c:out value="${row.title"/> <c:out value="$ {row.publishername"/> <c:out value="${row.editionnumber"/><br/> </c:when> <c:otherwise> Non ci sono libri con isbn <c:out value="${param.isbncbo" /> </c:otherwise> </c:choose> </c:if>