Laboratorio di sistemi JDBC Jsp [Java] File index.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>Tabella Books, database Shop</title> </head> <body> <h4>Visualizza i dati della tabella Books, database Shop</h4> <% Connection conn = null; Statement st = null; try { // carichiamo i driver di MySQL Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) { out.println("Problemi nel caricamento dei driver"); return; } try { // predisponiamo la connessione col database conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop? user=root&password=coz123"); tabella_books.pdf Pag. 1/5 Cozzetto © Laboratorio di sistemi JDBC Jsp [Java] } catch(SQLException e) { out.println("Problemi nello stabilire la connessione al database"); return; } try { // 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); // Conto il numero di record della tabella books String sqlStr = "SELECT * FROM books"; ResultSet rs = st.executeQuery(sqlStr); // ci posizioniamo sull'ultimo record rs.last(); // mi faccio dare la posizione che è anche il numero di record del ResultSet int rowCount = rs.getRow(); if (rowCount==0) { out.println("La query non restituisce risultati"); return; } // sposto il cursore prima del primo record rs.beforeFirst(); // formattiamo il risultato out.println("<table border='1'><tr>"); out.println("<td>Book ID</td>"); out.println("<td>Title</td>"); out.println("<td>Author</td>"); out.println("<td>Price</td>"); out.println("<td>Publisher</td>"); out.println("<td>Category ID</td>"); out.println("</tr><tr>"); // effettuiamo un ciclo all'interno del ResultSet // la prima volta che viene eseguito rs.next(), il cursore // viene posizionato correttamente sul primo record while (rs.next()) { // stampiamo i valori delle colonne out.println("<td>"+rs.getInt(1)+"</td>"); // possiamo scrivere anche in alternativa // out.println("<td>"+rs.getString("title")+"</td>"); out.println("<td>"+rs.getString(2)+"</td>"); out.println("<td>"+rs.getString(3)+"</td>"); tabella_books.pdf Pag. 2/5 Cozzetto © Laboratorio di sistemi JDBC Jsp [Java] out.println("<td>"+rs.getDouble(4)+"</td>"); out.println("<td>"+rs.getString(5)+"</td>"); out.println("<td>"+rs.getInt(6)+"</td>"); out.println("</tr>"); } // fine while out.println("</table>"); out.println("<br/>La query restituisce "+rowCount+" record"); rs.close(); } catch(SQLException e) { out.println("Errore nell'esecuzione della query"); return; } try { st.close(); conn.close(); } catch(SQLException e) { out.println("Impossibile effettuare la chiusura della connessione"); return; } %> </body> </html> tabella_books.pdf Pag. 3/5 Cozzetto © Laboratorio di sistemi JDBC Jsp [Java] File indexJSTL.jsp <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="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>Visualizza i dati della tabella Books, database Shop mediante JSTL</title> </head> <body> <h4>Visualizza i dati della tabella Books, database Shop mediante JSTL</h4> <sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/shop" user="root" password="coz123"/> <!-- mi faccio dare i tutti i generi senza ripetizioni --> <sql:query var="result"> SELECT * FROM books </sql:query> <c:choose> <c:when test="${result.rowCount==0}"> La query non restituisce risultati </c:when> <c:otherwise> <table border="1"> <td>Book ID</td> <td>Title</td> <td>Author</td> <td>Price</td> tabella_books.pdf Pag. 4/5 Cozzetto © Laboratorio di sistemi JDBC Jsp [Java] <td>Publisher</td> <td>Category ID</td> <c:forEach var="row" items="${result.rows}"> <tr> <td><c:out value="${row.book_id}" /></td> <td><c:out value="${row.title}" /></td> <td><c:out value="${row.author}" /></td> <td><c:out value="${row.price}" /></td> <td><c:out value="${row.publisher}" /></td> <td><c:out value="${row.category_id}" /></td> </tr> </c:forEach> </table> <p>La query restituisce <c:out value="${result.rowCount}"/> record</p> </c:otherwise> </c:choose> </body> </html> tabella_books.pdf Pag. 5/5 Cozzetto ©