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 ©