Laboratorio di Sistemi CRUD con MySQL JSP (Java)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Sistemi CRUD con MySQL JSP (Java)"

Transcript

1 Il problema Vogliamo realizzare un applicativo web che consenta di inserire, modificare e cancellare i record della tabella libri_tbl (database MySQL biblio_db). In questi casi, parliamo di applicativo di tipo CRUD (C=create, R=retrieve, U=update e D=delete). Il modello dei dati Ipotizziamo la presenza nel database biblio_db di tre tabelle secondo lo schema ER seguente: Fig. 1 Diagramma ER (Entity-Relationship) Lo schema è lo stesso di altri esempi già presi in considerazione (in particolare si leggano gli articoli DAO, Database a oggetti: db4o nella sezione Web application del mio sito web Funzionalità dell'applicativo web Rappresentiamo nelle schermate seguenti le funzionalità del nostro applicativo. In particolare le pagine che prenderemo in considerazione sono: cancellalibro.jsp, effettuamodificalibro.jsp, gestioneerrori.jsp, index.jsp, inseriscilibro.jsp, modificalibro.jsp. Fig. 2 L'elenco dei libri crud_mysql.pdf Pag. 1/17 Cozzetto

2 Fig. 3 Inserimento di un libro A titolo di esempio, considereremo anche la gestione della chiave esterna relativa all'autore (nella figura rappresentata da alcuni valori contenuti in una combo-box). Fig. 4 Messaggio dell'avvenuto inserimento Durante la fase di inserimento, l'applicativo dovrà: verificare che i campi isbn e titolo non siano entrambi nulli (il campo idautore è comunque valorizzato per cui non è mai nullo è una scelta progettuale potevamo fare anche diversamente in base alle impostazioni della tabella); verificare che non venga inserito un record con lo stesso isbn: in tal caso, l'applicativo si limiterà a segnalare la cosa senza compiere alcuna operazione. crud_mysql.pdf Pag. 2/17 Cozzetto

3 Fig. 5 Modifica del record con nuovi dati Durante la fase di modifica, occorre: verificare ancora una volta che i due campi isbn e titolo non siano nulli (come nel caso dell'inserimento); inoltre sarà possibile modificare anche l'idautore in modo tale che sia possibile salvarne il nuovo valore. Inoltre, qualsiasi tentativo di modifica dell'isbn sulla barra degli indirizzi, ridirigerà verso la pagina index.jsp, come pure il mancato click sul link Modifica. Fig. 6 Il record con isbn= è stato cancellato dalla lista Anche nel caso della cancellazione, occorre controllare che l'isbn non venga alterato e che l'utente abbia davvero deciso di eliminare un record cliccando sul link Cancella. Il modello a oggetti Il modello a oggetti adottato è simile a quello dell'esercitazione DAO. Cambieranno i metodi della classe DAO i quali soddisferanno ai nuovi requisiti posti dal problema. Non vengono riportate per brevità le 3 classi Autore, Libro, Editore. crud_mysql.pdf Pag. 3/17 Cozzetto

4 /* * DAO.java * * Created on 7 aprile 2008, * */ package it.mauriziocozzetto.classipkg; import java.util.list; import java.sql.*; import java.util.arraylist; /** * maurizio */ public class DAO { // reference al database static Connection conn; /** Creates a new instance of DAO */ public DAO() { // La classe DAO // restituisce la lista dei libri(int) v public List<Libro> getlibri() throws SQLException { Statement st = conn.createstatement(); List<Libro> libri = new ArrayList<Libro>(); ResultSet rs = st.executequery("select * FROM libri_tbl"); // ciclo di lettura su tutto il RecordSet while (rs.next()) { String isbn = rs.getstring("isbn"); String titolo = rs.getstring("titolo"); // caricamento del libro nella lista Libro l = new Libro(isbn, titolo); libri.add(l); rs.close(); st.close(); return libri; // fine metodo getlibri() // restituisce l'elenco degli id (distinti) degli autori public int[] getelencoidautore() throws SQLException { Statement st = conn.createstatement(); crud_mysql.pdf Pag. 4/17 Cozzetto

5 // prepariamo la struttura dati List<Integer> listaidautore = new ArrayList<Integer>(); ResultSet rs = st.executequery("select DISTINCT idautore FROM libri_tbl ORDER BY idautore"); // ciclo di lettura sui record while (rs.next()) { int idautore = rs.getint("idautore"); listaidautore.add(idautore); // chiusura del record-set e dello statement rs.close(); st.close(); // contiamo gli id int numidautore = listaidautore.size(); // prepariamo un vettore di interi correttamente dimensionato int[] v = new int[numidautore]; // spostiamo gli id autore nel vettore dal Vector for (int i=0; i<numidautore; i++) { v[i]=(integer) listaidautore.get(i); return v; // fine metodo getelencoidautore() // restituisce il libro con codice isbn assegnato public Libro trovalibro(string isbn) throws SQLException { Libro l = null; // creiamo lo statement che rappresenta l'istruzione SQL Statement st = conn.createstatement(); // troviamo il record con isbn assegnato ResultSet rs = st.executequery("select * FROM libri_tbl WHERE libri_tbl.isbn = '"+isbn+"'"); // se esiste il record if (rs.next()) { String ISBN = rs.getstring("isbn"); String titolo = rs.getstring("titolo"); int idautore = rs.getint("idautore"); // restituiamo l'autore con idautore assegnato Autore autore=trovaautore(idautore); // istanziamo un libro con isbn, titolo e autore l=new Libro(ISBN,titolo,autore); // chiudiamo il ResultSet e lo statement crud_mysql.pdf Pag. 5/17 Cozzetto

6 rs.close(); st.close(); return l; // fine metodo trovalibro // troviamo l'autore con idautore assegnato public Autore trovaautore(int idautore) throws SQLException { Autore a = null; // creiamo lo statement che rappresenta l'istruzione SQL Statement st = conn.createstatement(); // troviamo l'autore ResultSet rs = st.executequery("select * FROM autori_tbl WHERE autori_tbl.idautore = "+idautore); // se esiste il record if (rs.next()) { int idaut = rs.getint("idautore"); String cognome = rs.getstring("cognome"); String nome = rs.getstring("nome"); // istanziamo l'autore a = new Autore(idAut, cognome, nome); // fine if // chiudiamo il ResultSet e lo statement rs.close(); st.close(); return a; // registra nel database un libro public int salvalibro(libro l) throws SQLException { // lettura di isbn, titolo e idautore String isbn = l.getisbn(); String titolo = l.gettitolo(); int idautore = l.getautore().getidautore(); // preparazione dello statement Statement st = conn.createstatement(); String sql = "INSERT INTO libri_tbl(isbn,titolo,idautore) VALUES ('"+isbn+"','"+titolo+"',"+idautore+")"; int result = st.executeupdate(sql); st.close(); return result; // fine metodo salvalibro // cancella un libro public int cancellalibro(libro l) throws SQLException { String isbn = l.getisbn(); Statement st = conn.createstatement(); crud_mysql.pdf Pag. 6/17 Cozzetto

7 String sql = "DELETE FROM libri_tbl WHERE isbn = '"+isbn+"'"; int result = st.executeupdate(sql); st.close(); return result; // fine metodo cancellalibro // modifica del libro il cui isbn è assegnato public int modificalibro(libro l, String isbn) throws SQLException { String ISBN = l.getisbn(); String titolo = l.gettitolo(); int idautore = l.getautore().getidautore(); Statement st = conn.createstatement(); String sql = "UPDATE libri_tbl SET isbn = '"+ISBN+"', titolo = '"+titolo+"', idautore="+idautore+" WHERE isbn = '"+isbn+"'"; int result = st.executeupdate(sql); st.close(); return result; // fine metodo modificalibro // chiusura della connessione public void closeconn() throws SQLException { conn.close(); // fine metodo close() // caricamento dei driver e apertura della connessione al database public void openconn() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/biblio_db? user=root&password="); // fine metodo open() // fine classe DAO Le pagine web Pagina errorpage = "gestioneerrori.jsp" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>database biblio_db</title> <style type="text/css"> body,td,th { font-family: Verdana; font-size: 16px; crud_mysql.pdf Pag. 7/17 Cozzetto

8 .testorosso { color: red; </style> </head> <body> <h3>tabella Libri</h3> // visualizziamo un messaggio nei casi previsti if (request.getparameter("msg")!=null) { String msg = request.getparameter("msg"); out.println("<p><span class='testorosso'>"+msg+"</span></p>"); // link per inserire un record out.println("<p><a href='inseriscilibro.jsp'>inserisci</a></p>"); <jsp:usebean id="dao" class="it.mauriziocozzetto.classipkg.dao"/> // apertura del database dao.openconn(); // elenco di tutti i libri List<Libro> listalibri = dao.getlibri(); // se la lista non contiene elementi if (listalibri.size()==0) out.println("non ci sono libri"); else { out.println("<table>"); // stampa dell'isbn e del titolo del libro, con i link necessari per la manutenzione dei record for (Libro l : listalibri) { out.println("<tr>"); out.println("<td>"+l.getisbn()+"</td><td>"+l.gettitolo()+"</td><td>"+"<a href='modificalibro.jsp?isbn="+l.getisbn()+"'>modifica</a></td><td><a href='cancellalibro.jsp?isbn="+l.getisbn()+"'>cancella</a></td>"); out.println("</tr>"); // fine for out.println("</table>"); // fine if // chiusura del database dao.closeconn(); </body> </html> crud_mysql.pdf Pag. 8/17 Cozzetto

9 Pagina errorpage = import = "it.mauriziocozzetto.classipkg.*" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html"> <title>inserimento</title> <style type="text/css"> body,td,th { font-family: Verdana; font-size: 16px; border: 0px;.testoRosso { color: red; </style> </head> <body> <h3>inserimento</h3> <jsp:usebean id="dao" class="it.mauriziocozzetto.classipkg.dao"/> // apertura della connessione dao.openconn(); // se l'utente non ha premuto il tasto inviabtn if (request.getparameter("inviabtn") == null) { <form id="provafrm" method="post" action="${request.requesturi" > Isbn <input type="text" name="isbntxt" value="" size="30"/> <span class="testorosso">*</span><br/> Titolo <input type="text" name="titolotxt" value="" size="30" /> <span class="testorosso">*</span> <br/> IdAutore <select name="idautoremnu"> // caricamento degli id degli autori int elencoidautore[]=dao.getelencoidautore(); // caricamento degli id in una combo-box for (int i = 0; i<elencoidautore.length; i++) { <option>=elencoidautore[i]</option> // fine for crud_mysql.pdf Pag. 9/17 Cozzetto

10 </select> <span class="testorosso">*</span><br/> <input type="submit" name="inviabtn" value="invia"/><br/> <p><span class="testorosso">* Dati obbligatori</span></p> </form> else { // lettura di isbn, titolo e idautore String isbn = request.getparameter("isbntxt"); String titolo = request.getparameter("titolotxt"); int idautore = Integer.parseInt(request.getParameter("idAutoreMnu")); // isbn e titolo non possono essere nulli if (isbn==null isbn.length()==0 titolo==null titolo.length()==0) { dao.closeconn(); response.sendredirect("index.jsp?msg=impossibile effettuare l'inserimento perche' uno dei due campi e' nullo o entrambi"); return; // noto l'isbn, troviamo il libro l Libro l = dao.trovalibro(isbn); // se non esiste il libro con chiave isbn possiamo inserirlo nel db if (l==null) { // troviamo l'autore del libro Autore a = dao.trovaautore(idautore); // creiamo il libro l = new Libro(isbn, titolo, a); // lo inseriamo nel db int result = dao.salvalibro(l); // se l'inserimento ha effetto result>0 if (result>0) { response.sendredirect("index.jsp?msg=inserimento effettuato record con isbn="+isbn); else { response.sendredirect("index.jsp?msg=impossibile registrare il record con isbn="+isbn); // fine if else { response.sendredirect("index.jsp?msg=record con isbn="+isbn+" gia' esistente"); // fine if // fine if // chiusura della connessione dao.closeconn(); </body> </html> crud_mysql.pdf Pag. 10/17 Cozzetto

11 Pagina errorpage = import = "it.mauriziocozzetto.classipkg.*" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>modifica</title> <style type="text/css"> body,td,th { font-family: Verdana; font-size: 16px; border: 0px;.testoRosso { color: red; </style> </head> <body> <h3>modifica</h3> // se l'utente ha selezionato un record if (request.getparameter("isbn")!= null) { <jsp:usebean id="dao" class="it.mauriziocozzetto.classipkg.dao"/> // apertura della connessione dao.openconn(); // recuperiamo l'isbn String isbn = request.getparameter("isbn"); // troviamo il libro con isbn selezionato Libro l = dao.trovalibro(isbn); // se il libro esiste if (l!= null) { // recuperiamo l'idautore int idautore = l.getautore().getidautore(); <form id="provafrm" method="get" action="effettuamodificalibro.jsp" > Isbn <input type="text" name="isbntxt" value="=l.getisbn()" size="30" /> <span class="testorosso">*</span><br/> Titolo <input type="text" name="titolotxt" value="=l.gettitolo()" size="30" /> <span class="testorosso">*</span><br/> IdAutore crud_mysql.pdf Pag. 11/17 Cozzetto

12 </body> </html> <select name="idautoremnu"> // memorizziamo in un vettore l'elenco degli idautore int elencoidautore[]=dao.getelencoidautore(); for (int i = 0; i<elencoidautore.length; i++) { // imposto come elemento selezionato quello relativo all'idautore if(idautore==elencoidautore[i]) { <option selected="true">=elencoidautore[i]</option> else { <option>=elencoidautore[i]</option> // fine if // fine for </select> <span class="testorosso">*</span><br/> <input type="hidden" name="isbnhdn" value="=l.getisbn()"/> <input type="submit" name="inviabtn" value="invia"/><br/> <p> <span class="testorosso">* Dati obbligatori</span></p> </form> else { response.sendredirect("index.jsp?msg=non esiste un libro con isbn="+isbn); // fine if (l!=null) // chiusura della connessione dao.closeconn(); else { // se tentiamo di accedere a questa pagina senza aver selezionato il link "Modifica" response.sendredirect("index.jsp"); // fine if request.getparameter() Pagina errorpage = import = "it.mauriziocozzetto.classipkg.*" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>modifica</title> crud_mysql.pdf Pag. 12/17 Cozzetto

13 <style type="text/css"> body,td,th { font-family: Verdana; font-size: 16px; border: 0px; </style> </head> <body> <h3>modifica</h3> // se l'utente ha premuto il pulsante inviabtn if (request.getparameter("inviabtn")!= null) { <jsp:usebean id="dao" class="it.mauriziocozzetto.classipkg.dao"/> // apriamo la connessione dao.openconn(); // recuperiamo isbn, titolo, idautore e l'isbn "nascosto" String isbn = request.getparameter("isbntxt"); String titolo = request.getparameter("titolotxt"); int idautore = Integer.parseInt(request.getParameter("idAutoreMnu")); String isbnhdn = request.getparameter("isbnhdn"); // verifichiamo che isbn e titolo non siano nulli if ((isbn==null isbn.length()==0) (titolo==null titolo.length()==0)) { dao.closeconn(); response.sendredirect("index.jsp?msg=impossibile effettuare la modifica perche' uno dei due campi e' nullo o entrambi"); return; // noto l'idautore troviamo l'autore Autore a = dao.trovaautore(idautore); // creiamo un libro con isbn, titolo e autore a Libro l = new Libro(isbn, titolo, a); // modifichiamo il libro l (il vecchio isbn è stato conservato in isbnhdn) int result = dao.modificalibro(l,isbnhdn); // se la modifica ha avuto successo result > 0 if (result>0) { response.sendredirect("index.jsp?msg=modificato record con isbn="+l.getisbn()); else { response.sendredirect("index.jsp?msg=impossibile aggiornare il record con isbn="+isbn); // chiudiamo la connessione dao.closeconn(); else { crud_mysql.pdf Pag. 13/17 Cozzetto

14 // se tentiamo di accedere a questa pagina senza aver premuto il //pulsante inviabtn vieniamo rediretti alla pagina index.jsp response.sendredirect("index.jsp"); // fine if request </body> </html> Pagina errorpage = import = "it.mauriziocozzetto.classipkg.*" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>cancellazione</title> <style type="text/css"> body,td,th { font-family: Verdana; font-size: 16px; border: 0px; </style> </head> <body> <h3>cancellazione</h3> // se l'utente ha cliccato sul link "Cancella" if (request.getparameter("isbn")!= null) { <jsp:usebean id="dao" class="it.mauriziocozzetto.classipkg.dao"/> // apriamo la connessione dao.openconn(); // recuperiamo l'isbn del libro da cancellare String isbn = request.getparameter("isbn"); // carichiamo in memoria il libro Libro l = dao.trovalibro(isbn); // se il libro esiste if (l!= null) { // cancelliamo il record int result = dao.cancellalibro(l); crud_mysql.pdf Pag. 14/17 Cozzetto

15 if (result>0) { response.sendredirect("index.jsp?msg=cancellazione effettuata del record con isbn="+l.getisbn()); else response.sendredirect("index.jsp?msg=impossibile cancellare record con isbn="+l.getisbn()); else { response.sendredirect("index.jsp?msg=non esiste un libro con isbn="+isbn); // fine if numlibri // chiudiamo la connessione dao.closeconn(); else { // se tentiamo di accedere a questa pagina senza aver selezionato il link "Cancella" response.sendredirect("index.jsp"); // fine if request </body> </html> Pagina iserrorpage = "true" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>gestione errori</title> <style type="text/css"> body,td,th { font-family: Trebuchet MS; font-size: 16px; </style> </head> <body> <h3>gestione errori</h3> Siamo spiacenti, si è verificato un errore durante l'esecuzione:<br/> = exception.getmessage() </body> </html> crud_mysql.pdf Pag. 15/17 Cozzetto

16 Note conclusive Nelle pagine di inserimento (inseriscilibro.jsp) e di variazione dei dati (modificalibro.jsp), compare sempre la combo-box idautore. Potrebbe essere più comodo per l'utente lavorare con il campo Anagrafica in luogo dell'idautore, come nella figura seguente. Fig. 7 L'anagrafica autore in luogo dell'idautore Tuttavia l'informazione memorizzata nella tabella è sempre l'idautore (essendo una chiave esterna). Per implementare questa funzionalità, dobbiamo aggiungere alla classe DAO, un nuovo metodo public String[] getelencoanagraficheautore() throws SQLException { // prepariamo le strutture dati List<String> listaanagraficheautore = new ArrayList<String>(); int[] v = this.getelencoidautore(); String[] listaanagrafiche=new String[v.length]; for (int i=0; i<v.length; i++) { listaanagraficheautore.add(trovaautore(v[i]).getanagrafica()); listaanagrafiche[i]=listaanagraficheautore.get(i); return listaanagrafiche; // fine metodo getelencoanagraficheautore() Fig. 8 Metodo getelencoanagraficheautore() poi modificare le due pagine inseriscilibro.jsp e modificalibro.jsp nella maniera seguente (riportiamo solo i frammenti che ci interessano): crud_mysql.pdf Pag. 16/17 Cozzetto

17 Anagrafica Autore <select name="idautoremnu"> // caricamento delle anagrafiche e degli id degli autori int elencoidautore[]=dao.getelencoidautore(); String[] elencoanagraficheautore=dao.getelencoanagraficheautore(); // caricamento delle anagrafiche in una combo-box for (int i = 0; i<elencoidautore.length; i++) { <option value="=elencoidautore[i]"> =elencoanagraficheautore[i] </option> // fine for </select> Fig. 9 Frammento di codice della pagina inseriscilibro.jsp Anagrafica Autore <select name="idautoremnu"> // memorizziamo in un vettore l'elenco degli idautore e in un // altro le anagrafiche degli autori int elencoidautore[]=dao.getelencoidautore(); String[] elencoanagraficheautore=dao.getelencoanagraficheautore(); for (int i = 0; i<elencoidautore.length; i++) { // imposto come elemento selezionato quello // relativo all'idautore if(idautore==elencoidautore[i]) { <option selected="true" value="=elencoidautore[i]"> =elencoanagraficheautore[i]</option> else { <option value="=elencoidautore[i]"> =elencoanagraficheautore[i]</option> // fine if // fine for </select> Fig. 10 Frammento della pagina modificalibro.jsp crud_mysql.pdf Pag. 17/17 Cozzetto

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java]

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java] Vogliamo progettare un prototipo di applicazione web che consenta ad un utente di ottenere, selezionando l'autore da una casella combinata, l'elenco dei libri scritti da quell'autore, come nelle figure

Dettagli

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans) Definizione Adattato da "http://it.wikipedia.org/wiki/model-view-controller" Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è il nome di un design pattern fondamentale

Dettagli

Laboratorio di sistemi SELECT e checkbox Jsp [Java]

Laboratorio di sistemi SELECT e checkbox Jsp [Java] 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

Dettagli

Laboratorio di sistemi Web Application in Php5 Php

Laboratorio di sistemi Web Application in Php5 Php Applicazioni web con Xampp, Php5 e NetBeans 6.5 (Windows) Vogliamo ora riscrivere a titolo di prova un'applicazione web precedentemente scritta in Java (si legga l'articolo all'indirizzo http://www.mauriziocozzetto.net/pdf/dao_mysql.pdf).

Dettagli

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java] Per la comprensione del presente articolo, occorre aver assimilato i concetti esposti nell'articolo Prototipo autenticazione utente (file autenticazione_2.pdf). (Tratto da Wikipedia, l'enciclopedia libera)

Dettagli

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java] Per la comprensione del presente articolo, occorre aver assimilato i concetti esposti nell'articolo Prototipo autenticazione utente (file autenticazione_2.pdf). (Tratto da Wikipedia, l'enciclopedia libera)

Dettagli

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet 1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso

Dettagli

Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice

Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice Vogliamo realizzare un'applicazione di tipo CRUD (Create, Read, Update,

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

La connessione ai database MySQL tramite script PHP versione 5.5

La connessione ai database MySQL tramite script PHP versione 5.5 La connessione ai database MySQL tramite script PHP versione 5.5 Php è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che si occupa della gestione

Dettagli

Capitolo 5. Soluzione: Soluzione in C:

Capitolo 5. Soluzione: Soluzione in C: Capitolo 5 Esercizio 5.1 Realizzare una procedura in un linguaggio di programmazione di alto livello che tramite SQL Embedded elimina dalla tabella DIPARTIMENTO l'elemento che ha il nome che viene fornito

Dettagli

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Pag. 1/12 Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Prendiamo in esame un qualsiasi progetto NetBeans tra quelli studiati che fa uso di un database

Dettagli

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN Il metodo migliore per creare nuovi DB è quello di usare l interfaccia del PHPMYADMIN (che viene installata automaticamente con il pacchetto easy

Dettagli

Laboratorio di Progettazione Web

Laboratorio di Progettazione Web PHP e MySQL (2) Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR - [email protected] Nelle pagine web, quando le tabelle sono molto complesse, può risultare utile suddividere la visualizzazione

Dettagli

MyShopDB = MyShop + MySQL

MyShopDB = MyShop + MySQL MyShopDB = MyShop + MySQL Adattiamo l applicazione MyShop in modo da poter utilizzare un database come fonte di dati, invece dei soliti file testuali. I nuovi sorgenti si trovano nel file MyShopDB.zip

Dettagli

Laboratorio di sistemi Prima Web Application JSP [Java]

Laboratorio di sistemi Prima Web Application JSP [Java] Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File

Dettagli

Basi di Dati Esercitazione JDBC

Basi di Dati Esercitazione JDBC Basi di Dati Esercitazione JDBC 30 Maggio 2006 Ing. Paolo Papotti Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello)

Dettagli

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Spiegazioni esercizio Gestione Tabella con PHP e MySQL Spiegazioni esercizio Gestione Tabella con PHP e MySQL foglio_di_stile.css (foglio di stile esterno) Questo file contiene: 1. la struttura generale delle quattro pagine web dinamiche: index.php, inserisci.php,

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java] Vogliamo realizzare un prototipo di applicativo web che consenta a un gruppo di utenti di autenticarsi. In prima istanza, carichiamo in memoria tutti gli utenti ammessi ad accedere al sistema, in seconda

Dettagli

ESAME DI STATO I.T.E. A.S

ESAME DI STATO I.T.E. A.S ESAME DI STATO I.T.E. A.S. 2012-2013 Un grande museo deve realizzare un Sistema Informatico per la gestione della biglietteria online. La biglietteria online consentirà di acquistare i biglietti sia per

Dettagli

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement JDBC Programmazione in Ambienti Distribuiti V 1.4 Marco Torchiano 2006 Uso di JDBC Caricamento della classe driver Class.forName() Apertura della connessione DriverManager.getConnection() Creazione di

Dettagli

Esercizio: database LibriTesto DBMS MySQL

Esercizio: database LibriTesto DBMS MySQL III. Considerato il seguente Database Esercizio: database LibriTesto DBMS MySQL LIBRI (Id_LIBRO, TITOLO, NR_PAGINE, PREZZO, DATA_PUBBL, COD_Ed) AUTORI (COD_AU, COGNOME, NOME) CASE_EDITRICI (COD_CE, NOME,

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2014/2015 Architettura di una applicazione Web Browser Web HTTP Server Web Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2016/2017 Architettura di una applicazione Web Browser Web HTTP Server Web Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

GUIDA APPLICATIVA VERSIONE ANAGRAFICA LIGHT INTERMEDIARIO

GUIDA APPLICATIVA VERSIONE ANAGRAFICA LIGHT INTERMEDIARIO GUIDA APPLICATIVA INTERMEDIARIO VERSIONE 4.0.0 INTERMEDIARIO INDICE DEL DOCUMENTO 1. Anagrafica light 4.0... 3 2. Visualizza ditte inserite... 4 2.1. Visualizza dettaglio ditta...4 2.2. Modifica informazioni

Dettagli

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Connesione ad un Database Access con PHP Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni La connessione al Database Access L accesso ai dati di Access da PHP può avvenire

Dettagli

MY SQL Guida MySQL di base

MY SQL Guida MySQL di base 2017 MY SQL Guida MySQL di base Progetto di Alternanza Scuola-Lavoro Anno scolastico 2016-2017 Istituto Tecnico Enrico Fermi, Siracusa Eleonora SikeWEB 15/05/2017 MySQL Collegarsi ad un database e interagire

Dettagli

Le JavaServer Pages - Lezione 7 I JavaBean

Le JavaServer Pages - Lezione 7 I JavaBean Le JavaServer Pages - Lezione 7 I JavaBean A cura di Giuseppe De Pietro ([email protected]) Contenuti Nelle lezioni precedenti abbiamo visto gli elementi principali delle Java Server Pages, come

Dettagli

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali Docente: Carlo Drioli 31 marzo 2015 Esempio I prova infracorso Esercizio 1 Si consideri un applicazione per la gestione di menu

Dettagli

ESAME DI STATO I.T.E. A.S

ESAME DI STATO I.T.E. A.S ESAME DI STATO I.T.E. A.S. 2008-2009 Una casa editrice pubblica riviste prevalentemente rivolte a specialisti di varie discipline operanti in ambiente scientifico. Sapendo che: le pubblicazioni, che possono

Dettagli

Esercizi su JavaScript, DOM e Web Storage

Esercizi su JavaScript, DOM e Web Storage Linguaggi e tecnologie per il Web prof. Riccardo Rosati Corso di laurea in Ingegneria informatica e automatica Sapienza Università di Roma, a.a. 2017/2018 Esercizi su JavaScript, DOM e Web Storage Esercizio

Dettagli

Verso l architettura MVC-2 Java Server Pages (JSP)

Verso l architettura MVC-2 Java Server Pages (JSP) Verso l architettura MVC-2 Java Server Pages (JSP) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le

Dettagli

Esercizi su LibreOffice Base. INFORMATICA - Scienze Geologiche - Università di Bologna

Esercizi su LibreOffice Base. INFORMATICA - Scienze Geologiche - Università di Bologna Esercizi su LibreOffice Base Testo dell esercizio (1) Consideriamo ed estendiamo l esempio della libreria visto a lezione. Si vuole realizzare un database per la gesione di una libreria. Di ogni libro

Dettagli

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente,

Dettagli

GESTIONE DI MDB in WEB

GESTIONE DI MDB in WEB GESTIONE DI MDB in WEB Il presente documento riporta un esempio generico di gestione di un database di Access. Il lettore può personalizzare in base alle proprie esigenze sia il contenuto del database,

Dettagli

Tema Esame Informatica Mercurio Gestione della palestra

Tema Esame Informatica Mercurio Gestione della palestra Tema Esame Informatica Mercurio 05 Gestione della palestra Analisi dei dati Le Entità che possono essere individuate nel problema sono: Corso, per i diversi corsi offerti dalla palestra (nuoto, danza,

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 SQL per le applicazioni Esercitazione PHP e MySQL Svolgimento D B M G Passi di risoluzione creazione e popolamento della base di dati Creazione di un script SQL Passo 2 creazione di una query d interrogazione

Dettagli

SIMULAZIONE SECONDA PROVA

SIMULAZIONE SECONDA PROVA SIMULAZIONE SECONDA PROVA L azienda Gamma è una società multinazionale di produzione e commercializzazione di prodotti di abbigliamento. Essa ha intuito l opportunità di indagare i nuovi modelli individuali

Dettagli

PHP e MySQL. Scripting server-side per accesso a DB MySQL

PHP e MySQL. Scripting server-side per accesso a DB MySQL PHP e MySQL Scripting server-side per accesso a DB MySQL Connessione a un DB MySQL Prima di accedere ai dati è necessario creare una connessione con il DB In PHP si utilizza la funzione mysql_connect,

Dettagli