Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Schema: Autore(Codice,Nome,Cognome) Scrive(Codice,ISBN) Libro(ISBN,Titolo,Editore,Prezzo) Si vuole pubblicare una pagina Web che contenga lelenco di tutti gli autori, costruita in modo tale che cliccando su un autore compaia una seconda pagina che mostra tutti i suoi scritti
Script CGI
Usa la CLI del DBMS Postgres: #include<stdio.h> #include<pgsql/libpq-fe.h> /* libreria di accesso */ int main(){ PGconn *conn=PQconnectdb(dbname=Libri); PGresult *result=PQexec(conn, select Codice, None, Cognome from Autore order by Cognome); printf(Content-type text/html\n\n); printf(<HTML>\n<BODY>\n); printf(<H1>Elenco dei libri</H1>\n); int ntuples=PQntuples(result);
1 2
Script CGI
for(int i=0;i<ntuples;i++){ printf(<p><a ref=\mostraLibri.exe?codice=%d\>\n, PQgetvalue(result,i,0)); printf( Nome: %s\n Cognome: %s\n</a></p>\n, PQgetvalue(result, i, 1),PQgetvalue(result,i,2)); } printf(</BODY>\n</HTML>\n); }
Script CGI
exec sql declare Libri cursor for select Libro.ISBN, Titolo, Editore, Prezzo from Scrive join Libro on Scrive.ISBN=Libro.ISBN where Scrive.Codice=:Codice; exec sql open Libri; exec sql fetch Libri into :ISBN, :Titolo, :Editore, :Prezzo; printf(<H1>Elenco dei libri dellautore selezionato</H1>\n); while(sqlca.sqlcode==0){ printf(<P> ISBN: %s Titolo: %s Editore: %s Prezzo: %f</P>,ISBN,Titolo,Editore,Prezzo); exec sql fetch Libri into :ISBN, :Titolo, :Editore, :Prezzo; } exec sql close cursor Libri; printf(</BODY>\n</HTML>/n); return 0; }
5
JAVA servlet
PreparedStatement pstmt=conn.preparedStatement(select + Libro.ISBN, Titolo, Editore, Prezzo from Scrive left join Libro+ on Scrive.ISBN=Libro.ISBN where Scrive.Codice=?); pstmt.setString(1,Codice); ResultSet result=pstmt.executeQuery(); response.setContentType(text/html); PrinterWriter out=response.getWriter(); out.pritnln(<HTML>); out.println(<BODY>); out.println(<H1>Elenco dei libri dellautore</H1>); while (result.next()){ out.println(<P>); out.println( ISBN: + result.getString(ISBN)+ +
7
JAVA Servlet
Titolo: + result.getString(Titolo)+ + Editore: +resutl.getString(Editore)+ + Prezzo: +result.getString(Prezzo)); out.println(</P>); } out.println(</BODY>); out.println(</HTML>); result.close(); pstmt.close(); conn.close(); } catch (ClassNotFoundException e){ throw new ServletException(e);} catch(SQLException e){ throw new ServletException(e);}
Programma JSP
<%@ page language=java %> <%@ page import=java.sql.*%> <% String Codice=request.getParameter(codice); Class.forName(sun.jdbc. odbc.JdbcOdbcDriver); Connection conn=DriverManager.getConnection( jdbc:odbc:DB,user,pwd); PreparedStatement pstmt=conn.preparedStatement( select Libro.ISBN, Titolo, Editore, Prezzo + from Scrive left join Libro on Scrive.ISBN=Libro.ISBN + where Scrive.Codice=?); pstmt.setString(1,Codice); ResultSet result=pstmt.executeQuery(); %>
9
Programma JSP
<% //produci il markup fisso e il contenuto variabile%> <HTML> <BODY> <H1>Elenco dei libri dellautore selezionato</H1> <% while (result.next()){%> <P> ISBN:<%= result.getString(ISBN)%> Titolo:<%=result.getString(Titolo)%> Editore:<%=result.getString(Editore)%> Prezzo:<%=result.getString(Prezzo)%> </P> <% }> </BODY> </HTML> <% result.close();pstmt.close();conn.close();%>
10