J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.

Slides:



Advertisements
Presentazioni simili
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
Advertisements

1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Accesso ai dati su Relational Database Management Systems LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento.
JDBC: Concetti Fondamentali Lorenzo Blanco
Interfacce Java.
Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Database nel Web Modulo Didattico: Francesca Platania
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
Model – View - Controller
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
OO.1 Marco Ronchetti - Java Sql package.
EJB Getting started Database: MySql Application Server: Pramati Server Ambiente di sviluppo: Pramati Studio 3 Applicazione esempio: Logon Trento, 30/10/2002.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Citrix Metaframe. Metaframe è la soluzione client-server prodotta dalla Citrix in grado di rendere disponibili applicazioni e desktop a qualsiasi dispositivo.
Java Database Connection (dal corso dei Servizi Web)
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
JDBC(TM) Database Access
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Constraints.
Componenti dell’architettura Oracle
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
OUTPUT FORMATTATO La funzione printf consente di effettuare la stampa a video formattata. Sintassi: printf ( stringa_formato, arg0, arg1, … ); La stringa.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
INTERNET Internet è una rete a livello mondiale che permette alle persone di comunicare ed ad accedere a banca dati da qualunque parte del mondo e su qualunque.
PROGETTO DI STRUMENTI PER LA CONFIGURAZIONE DI APPLICAZIONI JAVA ENTERPRISE Anno Accademico 2006 / 2007 Sessione III FACOLTÀ DI INGEGNERIA CORSO DI LAUREA.
Voting Sistema di votazione telematica. Che cosè Sito web per gestire votazioni tramite internet La sezione amministratore permette di progettare lo scenario.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Scoprirete che su Office non si può solo contare ma anche sviluppare.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
VB.NET Sviluppo Applicazioni Desktop
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
1 Simulated multiple inheritance Sandro Pedrazzini Approfondimento Simulated multiple inheritance in Java.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Customer Support Research & Development Come registrarsi ed entrare in......ITRC.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Analysis and Development of Functions in REST Logic: Application to the «DataView» Web App UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA DIPARTIMENTO.
Collection & Generics in Java
Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
CREAZIONE UTENTE SU DATATOP. CREAZIONE UTENTE Andate su //datatop.di.unipi.it/webdb Login come utente: webdb password: ****** Administer -> User Manager.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Dynamic SQL.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Corso di Ingegneria del Web A A
Transcript della presentazione:

J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Java Sql package

J0 2 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento JDBC Unapplicazione per la quale sia fondamentale lindipendenza dal Database può essere scritta in Java usando le specifiche JDBC. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si deve usare SOLO la parte di SQL definita da ANSI SQL-2 standard. Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

J0 3 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Strati SW per laccesso a un DB

J0 4 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Type 1 – JDBC-ODBC Bridge Java application JDBC API JDBC-ODBC Bridge Data source ODBC API The standard JDK includes sun.jdbc.odbc.JdbcOdbcDriver

J0 5 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Type 2 – Part Java, Part Native Java application JDBC API JDBC Driver Data source Vendor API

J0 6 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Type 3 – Intermediate DB Access Server Java application JDBC API JDBC Driver Data source Native Driver JDBC Driver Server See

J0 7 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Type 4 – Pure Java Java application JDBC API JDBC Driver Data source

J0 8 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBC object model: the Manager. Loggetto centrale: java.sql.DriverManager. Ha la responsabilita di tenere traccia delle varie implementazioni JDBC che possono esistere per una applicazione. Se, per esempio, un sistema possedesse una implementazione JDBC Sybase e una Oracle, il DriverManager sarebbe responsabile di tenere traccia di queste implementazioni. Quando una applicazione vuole connettersi ad un database, chiede al DriverManager di darle una database connection, usando una database URL attraverso il metodo DriverManager.getConnection(). Basandosi su questa URL, il DriverManager cerca una implementazione di Driver che accetti la URL. Ottiene quindi una implementazione di Connection da quel Driver e la restituisce allapplicazione.

J0 9 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBC object model: the URL. Per permettere ad unapplicazione di definire con quale DB vuole interagire, JDBC usa il sistema standard Internet Uniform Resource Locator. Una JDBC URL (Database URL) consiste delle seguenti parti: jdbc: : Come per tutte le URL, il primo elemento e la specifica del protocollo – in questo caso una sorgente di dati JDBC. Il sottoprotocollo e specifico della implementazione JDBC. In molti casi, e il nome e versione DBMS name; per esempio, syb10 indica Sybase System 10. Lelemento subname e qualunque informazione specifica del DBMS che specifica dove deve connettersi. Per mSQL, la JDBC URL e nella forma: jdbc:msql://hostname:port/database A JDBC non importa che aspetto ha la URL. La sola cosa importante e che la implementazione desiderata di JDBC possa riconoscere la URL e avere le informazioni di cui abbisogna per collegarsi al DB tramite la URL.

J0 10 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBC object model: the Driver. Il DriverManager e la sola classe istanziata che JDBC 1.1 procura, a parte alcune sottoclassi specializzate di java.util.Date e alcuni oggetti Exception. Le altre chiamate fatte dallapplicazione sono scritte in ossequio alle JDBC interfaces che sono implementate per gli specifici DBMSs. The java.sql.Driver Interface Un Driver e essenzialmente una Connection factory. Il DriverManager usa un Driver per determinare se e in grado di trattare una data URL. Se uno dei Driver nella sua lista puo gestire la URL, quel Driver deve creare un Connection object e restituirlo al DriverManager. Poiche un applicazione referenzia solo indirettamente un Driver attraverso il DriverManager, le applicazioni in genere non si preoccupano di questa interfaccia.

J0 11 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBC Object Model: Statement. The java.sql.Statement Interface Uno Statement e una chiamata SQL non legata al database. It In generale e una semplice UPDATE, DELETE, INSERT, or SELECT in cui le colonne non sono legate a dei dati Java. Uno Statement fornisce metodi per fare le chiamate SQL e restituisce allapplicazione il risultato di un SELECT statement il numero di righe toccate da un UPDATE, DELETE, o INSERT statement. PreparedStatement e sottoclasse di Statement. E una chiamata precompilata al DB che richiede di legare alcuni parametri. Se la query deve essere ripetuta più volte, la precompilazione migliora lefficienza. Per chiamare stored procedures, una applicazione deve usare la CallableStatement sottoclasse di PreparedStatement. ATTENZIONE: le stored procedures spostano la logica di business ENTRO il DB!

J0 12 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBCom: Connection & ResultSet. The java.sql.Connection Interface Una Connection e una semplice sessione di database. Come tale immagazzina informazioni di stato concernenti la sessione di DB che gestisce e fornisce alla applicazione oggetti di tipo Statement, PreparedStatement, o CallableStatement per fare chiamate durante la sessione. The java.sql.ResultSet Interface Una applicazione ottiene I dati restituiti da una query SELECT attraverso limplementazione dellinterfaccia java.sql.ResultSet interface. Specificatamente, loggetto ResultSet permette allapplicazione di ottenere sequenze di righe di dati restituite dalla precedente SELECT. Il ResultSet fornisce una moltitudine di metodi che permettono di ottenere una data riga in qualunque tipo di dati java abbia senso. Per esempio, se nel DB ce una data memorizzata come datetime, la si puo ottenere tramite il metodo getString() e usarla come una String.

J0 13 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento The JDBC object model: the MetaData. The Meta-Data Interfaces Meta data sono dati che riguardano i dati. In particolare, sono I dati che danno informazioni concernenti il DB e i dati ottenibili dal DB. Java fornisce due meta-data interfaces: java.sql.ResultSetMetaData e java.sql.DatabaseMetaData. La ResultSetMetaData interface da modo di ottenere informazioni su un particolare ResultSet. Per esempio, tra altre cose, ResultSetMetaData dà informazioni sul numero di colonne nel result set, il nome di una colonna, e il suo tipo. La DatabaseMetaData interface, daltra parte, fornisce allapplicazione informazioni sul database in generale, come quale livello di supporto ha, il suo nome, versione ecc. La classe DatabaseMetaData e usata ad esempio da strumenti di sviluppo come JBuilder.

J0 14 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Relazioni tra le classi di java.sql Applicazione Prepared Statement Callable Statement Connection getConnection() creates createStatement() executeQuery() Result Set creates getString() Result Set Metadata DB MetaData loads Driver Manager Driver creates Statement creates

J0 15 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Simple Database Access Using the JDBC Interfaces Scrivere una applicazione di Database usando solo chiamate JDBC comporta i seguenti passi: 1.Chiedi al DriverManager una implementazione di Connection. 2.Chiedi alla Connection uno Statement o una sottoclasse Statement per eseguire il tuo SQL. 3.Per le sottoclassi di Statement, lega i parametri da passare alla prepared statement. 4.Esegui lo statement. 5.Per le queries, processa il result set ritornato dalla query. Ripetilo per tutti i result set finche ce ne sono. 6.Per gli altri other statements, leggi il numero di righe toccate. 7.Chiudi lo statement. 8.Processa cosi tutti gli statement che servono e poi chiudi la connessione.

J0 16 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Setting del Control Panel ODBC

J0 17 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Primo esempio package first; import java.lang.*; import java.util.*; import java.sql.*; import sun.jdbc.odbc.*; import java.io.*; public class first { public static void main(String arg[]) { int id; float amount; java.sql.Date dt; String companyName; String result; String item_desc; try { //connect to ODBC database Class.forName( sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:cityzoo"; // connect Properties p = new Properties(); p.put("user", ""); p.put("password",""); Connection con = DriverManager.getConnection(url,p); // create Statement object Statement stmt = con.createStatement(); String sqlselect = "Select item_nbr, wholesale_cost, " + " item_desc, company_name + from retail_item,company" + " where wholesale_cost<9 and + " company.company_id=retail_item.company_id" + " order by wholesale_cost"; // run query ResultSet rs = stmt.executeQuery(sqlselect); // process results while(rs.next()) { result = ""; id = rs.getInt(1); amount = rs.getFloat(2); //dt = rs.getDate(2); item_desc = rs.getString(3); companyName = rs.getString(4); result = "#"+result.valueOf(id) + " $"; result+= result.valueOf(amount) + " <"; result+= item_desc+"> "; System.out.println("Values are: " + result); } //close connection con.close(); } catch(Exception e) { System.out.println(e.getMessage()); } try { Thread.sleep(20*1000); } catch (Exception e) {} }

J0 18 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni-1 import java.applet.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import sun.jdbc.odbc.*; public class AppletQuery extends Applet implements ActionListener { Choice colorChoice; Choice sizeChoice; Button searchButton; TextArea resultsTextArea; ResultSet rs; Statement stmt; Connection con; public void init() { Panel layout_area; Panel search_area; Panel result_area; String stringSelect; // set background to white setBackground(new Color(255,255,255)); // create border layout as default setLayout(new BorderLayout()); layout_area = new Panel(); layout_area.setLayout(new BorderLayout()); // add layout_area to top of background panel add("North",layout_area); // add top label to layout setFont(new Font("Helvetica",Font.BOLD,12)); layout_area.add("North",new Label ("Enter value(s) to search on:")); setFont(new Font("Helvetica",Font.PLAIN,12)); // create gridlayout search panel // add to background layout { search_area = new Panel(); search_area.setLayout(new FlowLayout(1,5,5)); layout_area.add("Center",search_area); // create color Choice object // add to layout with label // create Choice object colorChoice // add colors to Choice object colorChoice = new Choice(); search_area.add(colorChoice); search_area.add(new Label("Color:"));

J0 19 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni -2 // create size Choice object // add to layout with Label // create Choice object sizeChoice // add sizes to Choice object sizeChoice = new Choice(); search_area.add(sizeChoice); stringSelect = "Select Distinct retail_item.color" + " from retail_item "; colorChoice.addItem(""); rs = processRequest(stringSelect); try { while (rs.next()) { String color=rs.getString(1); System.out.println(color); colorChoice.addItem(color); } } catch (Exception e) {} sizeChoice.addItem(""); stringSelect = "Select Distinct size" + " from retail_item "; rs = processRequest(stringSelect); try { while (rs.next()) { String size=rs.getString(1); System.out.println(size); sizeChoice.addItem(size); } } catch (Exception e) {} search_area.add(new Label("Size:")); search_area.add(new Label(" ")); searchButton = new Button(" Search "); searchButton.addActionListener(this); search_area.add(searchButton); }

J0 20 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni -3 // create another panel for the result set // make the type of layout GridBagLayout { result_area = new Panel(); // add results label setFont(new Font("Helvetica",Font.BOLD,12)); add("Center", new Label("Results:")); setFont(new Font("Courier",Font.PLAIN,12)); add("South",result_area); GridBagLayout gridbag = new GridBagLayout(); result_area.setLayout(gridbag); GridBagConstraints Constraints = new GridBagConstraints(); Constraints.weightx=1.0; Constraints.weighty=1.0; Constraints.anchor=GridBagConstraints.CENTER; Constraints.fill = GridBagConstraints.BOTH; Constraints.gridwidth = GridBagConstraints.REMAINDER; // create results text area resultsTextArea = new TextArea(15,60); // add with constraints to layout gridbag.setConstraints(resultsTextArea,Constraints); result_area.add(resultsTextArea); resultsTextArea.setEditable(false); }

J0 21 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni-4 // check to see if event was search button being pressed; // if so // connect to database // create query // send statement // process results // else // disregard // public void actionPerformed(ActionEvent event) { if (event.getSource() == searchButton) { String whereString = buildWhere(); // execute statement String stringSelect = "Select retail_item.item_nbr," + "retail_item.item_desc,retail_item.qty_per_pkg," + "retail_item.color," + "retail_item.size,retail_item.retail_cost " + "from retail_item" + whereString; resultsTextArea.setText("working..."); showResults(processRequest(stringSelect)); }

J0 22 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni-5 // process_request // // connect to database // build where clause // retrieve data // output results public ResultSet processRequest(String stringSelect) { try { //connect to database Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:cityzoo"; // connect con = DriverManager.getConnection(url, "", ""); // create Statement stmt = con.createStatement(); rs = stmt.executeQuery(stringSelect); } catch (Exception e) { // resultsTextArea.setText(e.getMessage()); } return rs; }

J0 23 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni-6 public void showResults(ResultSet rs) { String tempString = ""; String stringResult = ""; resultsTextArea.setText("Processing Results..."); try { while (rs.next()) { tempString = rs.getString(1) + "\t";// get item number stringResult+=tempString; tempString=rs.getString(2) + "\t";// get description stringResult+=tempString; tempString = rs.getString(3) + "\t";// get qty stringResult+=tempString; tempString = rs.getString(4) + "\t";// get color if (rs.wasNull()) { tempString = "\t\t"; } stringResult+=tempString; tempString= rs.getString(5) + "\t";// get size if (rs.wasNull()) { tempString = "\t\t"; } stringResult+=tempString; // get retail cost tempString="$" + rs.getString(6) + "\n"; stringResult+=tempString; } if (stringResult == "") { stringResult = "No Data Found \n"; } resultsTextArea.setText(stringResult); stmt.close(); rs.close(); } catch (Exception e) { resultsTextArea.setText(e.getMessage()); }

J0 24 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Applet per effettuare interrogazioni-7 if (colorString != null) { whereString = " Where "; whereString = whereString + " retail_item.color = '" + colorString + "'"; } if (sizeString != null) { if (whereString == null) { whereString = " Where "; } else { whereString = whereString + " and "; } whereString = whereString + " retail_item.size = '" + sizeString + "'"; } if (whereString == null) { whereString = ""; } return whereString; } // buildWhere // // check Choice components // if an item is selected and is not //the one at position 0, access the selected item // // if choice is category, access the category code // return generated where clause public String buildWhere() { String colorString = null; String sizeString = null; String whereString = null; int colorInt = colorChoice.getSelectedIndex(); if (colorInt > 0) { colorString = colorChoice.getSelectedItem(); } int sizeInt = sizeChoice.getSelectedIndex(); if (sizeInt > 0) { sizeString = sizeChoice.getSelectedItem(); }

J0 25 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento Esercizio Creare nel DB una tabella contenente i campi: ID nome cognome Costruire una pagina Welcome.html che dice Benvenuto, clicca qui per proseguire. Cliccando si invoca una servlet che verifica lesistenza di un cookie con la proprieta ID. Se il cookie esiste, la servlet cerca nel DB nome e cognome e genera una pagina che dice Ciao nome cognome, sei un vecchio cliente. Se invece il cookie non esiste, la servlet restituisce una pagina HTML contenente una Form che chiede Nome e cognome, in risposta alla quale Si genera un ID, si registrano I dati nel DB e si risponde Ciao nome cognome, sei stato registrato come nuovo cliente. Per ragioni di debugging e anche utile scrivere una pagina che invoca una Servlet che cancella il cookie e rimuove il record corrispondente del DB.