Tecnologie Web T Accesso Diretto alle Basi di Dati: Interfacce e Astrazioni

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecnologie Web T Accesso Diretto alle Basi di Dati: Interfacce e Astrazioni"

Transcript

1 Tecnologie Web T Accesso Diretto alle Basi di Dati: Interfacce e Astrazioni Home Page del corso: Versione elettronica: 4.01.AccessoDB.pdf Versione elettronica: 4.01.AccessoDB-2p.pdf 1

2 un piccolo passo indietro Modello frequente in applicazioni enterprise Presentation Livello di presentazione si occupa della visualizzazione dei risultati generati secondo il percorso definito nel flusso sottostante Business Flows A questo livello vengono implementati i flussi delle diverse conversazioni che interagiscono per comporre una applicazione Business Logic La logica di business contiene le caratteristiche delle applicazioni e dipende sia dal modello dei dati che, ancora più rilevante, dalle logiche di utilizzo degli stessi Services I servizi devono fornire tutte le funzionalità base (API) necessarie per l implementazione rapida ed efficace della logica di business, dalla gestione della concorrenza al supporto alle transazioni, dall interfacciamento ai DB al monitoraggio/controllo/gestione delle performance 2

3 Gestione della persistenza Una parte rilevante degli sforzi nello sviluppo di ogni applicazione distribuita di livello enterprise si concentra sul layer di persistenza Accesso, manipolazione e gestione di dati persistenti, tipicamente mantenuti in un DB relazionale Il mapping Object/Relational si occupa di risolvere il potenziale mismatch fra dati mantenuti in un DB relazionale (table-driven) e il loro processamento fatto da oggetti in esecuzione DB relazionali sono progettati per operazioni di query efficienti su dati di tipo tabellare Necessità di lavorare invece tramite interazione fra oggetti 3

4 ancora un piccolo passo indietro Come accedere ai dati di un DB? Dal Corso di Sistemi Informativi T, sappiamo che è possibile mediante istruzioni SQL eseguite interattivamente 4

5 Accesso diretto alle basi di dati (1/2) È anche possibile (ed è di gran lunga l accesso a DB più tipico) inserire istruzioni SQL direttamente nel codice di un applicazione scritta in un linguaggio di programmazione ospite (ad es. C, C++, Java, C#) Esempio Java - JDBC: System.out.println("Retrieve some data from the database.."); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM EMPLOYEE"); // display the result set while (rs.next()) { String number = rs.getstring(1); String name = rs.getstring(2); System.out.print(" empno= " + number); System.out.print(" firstname= " + name); System.out.print("\n"); } rs.close(); stmt.close(); 5

6 Accesso diretto alle basi di dati (2/2) Il problema da risolvere è relativo all integrazione tra i comandi SQL, i quali sono responsabili di realizzare l accesso al DB, e le normali istruzioni del linguaggio di programmazione Due soluzioni possibili: SQL Embedded o incastonamento : SQL viene integrato direttamente all interno del normale linguaggio di programmazione Es. di soluzione sono i cursori e SQL dinamico Call Level Interface (CLI): l integrazione con SQL avviene tramite l invocazione di una opportuna libreria di funzioni Es. di soluzione sono ODBC, OLE DB, ADO e JDBC 6

7 SQL Embedded L incastonamento prevede di introdurre direttamente nel programma sorgente le istruzioni SQL distinguendole dalle normali istruzioni tramite un opportuno separatore Lo standard SQL prevede che il codice SQL sia preceduto dalla stringa exec sql e termini con il carattere '; Preprocessore che espande i comandi SQL Cursori: strumento che permette a un programma di accedere alle righe di una tabella una alla volta; viene definito su una generica interrogazione SQL dinamico: permette all applicazione di definire al momento dell esecuzione le interrogazioni SQL da effettuare sulla base di dati Valore dei parametri (per istruzioni con struttura predefinita) Forma delle interrogazioni 7

8 Call Level Interface Mette direttamente a disposizione del programmatore una libreria di funzioni che permettono di interagire con un DBMS Rispetto a SQL Embedded, CLI rappresenta uno strumento più flessibile e meglio integrato con il linguaggio di programmazione anche se occorre gestire esplicitamente aspetti che con SQL Embedded sono demandati direttamente al preprocessore 8

9 Modo d uso generale CLI Una applicazione che accede (in lettura e/o scrittura) ad una sorgente di dati ha bisogno di fare le seguenti operazioni: 1. aprire una connessione alla sorgente dati 2. inviare attraverso la connessione istruzioni (di interrogazione e aggiornamento) alla sorgente dati 3. processare i risultati ricevuti dalla sorgente dati in risposta alle istruzioni inviate Le nostre sorgenti dati sono DB relazionali, gestiti da un DBMS a scelta tra DB2 (consigliato), MySQL, Hsqldb Ogni DBMS espone una API (Application Program Interface) Le applicazioni, per noi Java, interagiscono con le API del DBMS attraverso un driver 9

10 Soluzioni CLI Piattaforma software Microsoft ODBC (Object DataBase Connectivity ): interfaccia standard che permette di accedere a DB in qualunque contesto, realizzando interoperabilità con diverse combinazioni DBMS- Piattaforma-Reti OLE DB (Object Linking and Embedding for DataBases): soluzione proprietaria Microsoft che permette ad applicazioni Windows di accedere a sorgenti dati generiche, non solo relazionali ma anche a una vasta tipologia di archivi dati, quali caselle di posta elettronica; basata sul modello a oggetti COM ADO (ActiveX Data Object): interfaccia proprietaria Microsoft di alto livello ai sevizi offerti da OLE DB basata su una interfaccia record(tupla)-oriented JDBC Soluzione per l accesso ai dati in Java sviluppata da Sun Microsystem; controparte di ODBC per Java 10

11 Diverse soluzioni a confronto Nome Descrizione Pro :) Contro :( SQL Embedded Le istruzione SQL sono introdotte direttamente all interno del listato programma, distinte da un separatore (exec sql <istruzione> ;) Cursori per gestire risultati composti da più tuple; SQL dinamico per ottenere flessibilità Necessità di un preprocessore e di un supporto DBMS-piattaformalinguaggio-compilatore OLE DB/ ADO Soluzione proprietaria Microsoft che consente, grazie all uso di driver specifici, di interfacciare il linguaggio di programmazione con il DBMS Integrato in Windows; Driver offerti dai maggiori produttori di DBMS; Interfacciamento con altri tipi di dato (documenti, mailbox, ecc.) Dialetto SQL ristretto; Proprietario; Utilizzato solo su linguaggi e su piattaforme Microsoft JDBC Interfaccia fra il mondo Java ed i diversi DBMS. Utilizza dei driver specifici ma offre anche un ponte con ODBC (non è vero l inverso) Java, multipiattaforma, codice aperto; Disponibile per qualsiasi DBMS grazie anche al ponte ODBC Come ODBC richiede la disponibilità di un driver offerto dal DBMS 11

12 ODBC Acronimo di Open Database Connectivity API standard definita da Microsoft nel 1992 Permette l accesso a dati residenti in DB relazionali in un contesto eterogeneo e distribuito Es. DBMS: Access, MySQL, DB2, Oracle, Hsqldb, Permette ai programmatori di formulare richieste SQL che accederanno a dati relativi a DB distinti senza dover conoscere le interfacce proprietarie di ogni singolo DB Gestisce richieste SQL convertendole in un formato comprensibile al particolare DBMS 12

13 Architettura ODBC Application ODBC Driver Manager ODBC Driver (DBMS/OS/network) Data Source 13

14 JDBC API Java standard definita da Sun Microsystems nel 1996 Sun assicura che JDBC NON è acronimo di Java Database Connectivity ma è un semplice marchio registrato!! Rappresenta la controparte Java di ODBC Permette di accedere ai database (locali e remoti) in modo uniforme Garantisce accesso ai database in modo indipendente dalla piattaforma I driver JDBC sono collezioni di classi Java che implementano metodi definiti dalle specifiche JDBC Le classi Java che realizzano funzionalità JDBC sono contenute nei package java.sql: classi fondamentali javax.sql: estensioni 14

15 JDBC vs ODBC ODBC non è appropriato per un uso diretto dal linguaggio Java perché usa interfacce scritte in linguaggio C Una traduzione da API C ODBC a API Java non è raccomandata Una API Java come JDBC è necessaria per permettere una soluzione Java pura JDBC è normalmente utilizzato da programmatori Java per connettersi a DB relazionali Attraverso un piccolo programma bridge è possibile usare l interfaccia JDBC per accedere a DB accessibili via ODBC 15

16 Storia di JDBC Prima distribuzione (jdbc.sql) JDBC fa parte del pacchetto software JDK a partire dalla versione 1.1 (pakage java.sql) Con Java 2, è stato introdotto JDBC 2.0: Migliorate le funzionalità e i tipi di dato disponibili Offerto come package opzionale per funzionalità estese Java SE 8 include JDBC

17 Architettura JDBC Java Application utilizza le interfacce java.sql e javax.sql JDBC Driver Manager Type 2 Type 1 Type 4 Type 3 implementano java.sql e, in alcuni casi javax.sql JDBC/Native Bridge JDBC/ODBC Bridge All Java JDBC Driver All Java JDBC/Net Bridge Native Driver (DBMS specific) ODBC Driver Network Server DBMS data source 17

18 JDBC Driver Manager Rappresenta il livello di gestione di JDBC e opera tra l utente e i driver Tiene traccia dei driver disponibili e gestisce la creazione di una connessione tra un DB e il driver appropriato 18

19 Driver JDBC JDBC è un insieme di interfacce; per usare un interfaccia è necessario fornire un implementazione per tutti i metodi che la compongono L insieme delle classi Java che implementano le interfacce JDBC rappresentano un modulo software chiamato driver JDBC Ogni DBMS ha il proprio driver rilasciato dal produttore o sviluppato da terze parti Sono i driver che realizzano la vera comunicazione con il DB 19

20 Tipi di driver (1/2) Sono di quattro tipi e possono essere suddivisi in due categorie: 2-tier: client colloquiano direttamente con DB 3-tier: client comunicano con un middle-tier che accede al DB 20

21 Tipi di driver (2/2) Modello 3-tier: affinché l applicazione possa interagire con il DB occorre che le chiamate JDBC siano convertite in chiamate API native (caso JDBC/native bridge) o in chiamate ODBC (caso JDBC/ODBC bridge) L utente può utilizzare una API di alto livello (di più semplice utilizzo) che viene tradotta dal driver in chiamate di basso livello Non è realmente portabile in quanto richiede l utilizzo di componenti nativi (specifici dell ambiente in cui vengono eseguiti) Modello 2-tier: l applicazione interagisce direttamente con il DB mediante un opportuno protocollo di rete, per es. TCP/IP (caso driver JDBC middleware, detto anche Net-Driver), oppure mediante un protocollo di rete proprietario (caso driver JDBC Driver) Si appoggia su un ambiente completamente Java 21

22 Tipi di driver a confronto Tipo 1: Ponte JDBC-ODBC Driver prestazioni scadenti non indipendente dalla piattaforma fornito a corredo di JDK Tipo 2: Ponte JDBC-Native Driver migliori prestazioni non indipendente dalla piattaforma Tipo 3: Driver Java Puro per Accesso a DB via Middleware client indipendente dalla piattaforma servizi avanzati (caching) architettura complessa Tipo 4: Driver Java Puro per Accesso Diretto a DB client indipendente dalla piattaforma buone prestazioni Per approfondimenti: 22

23 Schema di uso di JDBC Accesso a DB con JDBC consiste nel: Caricare la classe del driver JDBC Ottenere una connessione dal driver Eseguire statement SQL Utilizzare risultati delle query Chiudere la connessione e rilasciare strutture dati utilizzate per la gestione del dialogo con il DB Class.forName( com.ibm.db2.jcc.db2driver").newinstance(); Connection conn = DriverManager.getConnection("jdbc:db2:MYDB"); Statement stm = conn.createstatement(); ResultSet res = stm.executequery("select * FROM MYTABLE"); while (res.next()) { String col1 = res.getstring("mycol1"); int col2 = res.getint("mycol2"); } 23

24 Interfacce e calssi JDBC L API JDBC 4.x core mette a disposizione più di 20 tra interfacce e classi Alcune fra le più importanti sono Driver DriverManager Connection Statement ResultSet 24

25 Interfaccia Driver (1/2) Rappresenta il punto di partenza per ottenere una connessione a un DBMS I produttori di driver JDBC implementano l interfaccia Driver (mediante opportuna classe) affinché possa funzionare con un tipo particolare di DBMS La classe che implementa Driver può essere considerata la factory per altri oggetti JDBC ad esempio, oggetti di tipo Connection Ad esempio, IBM nel suo Driver Java Puro implementa l interfaccia Driver mediante la classe: com.ibm.db2.jcc.db2driver 25

26 Interfaccia Driver (2/2) È possibile ottenere un istanza effettiva della classe Driver ricercando la classe con il metodo forname: Driver d = Class.forName( com.ibm.db2.jcc.db2driver )..newinstance(); Avendo a disposizione un oggetto Driver è possibile ottenere la connessione al database Ogni driver JDBC ha una stringa di connessione che riconosce nella forma: jdbc:product_name:database_alias dove database_alias specifica il DB a cui connettersi nel caso specifico della configurazione DB2 in LAB4: jdbc:db2://diva.disi.unibo.it:50000/[sample tw_stud] 26

27 Classe DriverManager Facilita la gestione di oggetti di tipo Driver Quando un oggetto Driver viene istanziato, esso viene automaticamente registrato nella classe DriverManager Ogni applicazione può registrare uno o più driver JDBC diversi tra loro Consente la connessione con il DBMS sottostante Mediante il metodo statico getconnection Usa il driver opportuno tra quelli registrati 27

28 Interfaccia Connection Un oggetto di tipo Connection rappresenta una connessione attiva con il DB Il metodo getconnection di DriverManager, se non fallisce, restituisce un oggetto di tipo Connection L interfaccia mette a disposizione una serie di metodi per le operazioni, tra le quali: Preparazione di query SQL da inviare tramite oggetti Statement PreparedStatement CallableStatement 28

29 Interfaccia Statement Gli oggetti di tipo Statement possono essere usati per inviare query SQL semplici verso il DBMS sottostante query che non fanno uso di parametri La query può essere di modifica UPDATE, INSERT, CREATE oppure di selezione SELECT Per query di tipo SELECT il risultato è inserito in un oggetto ResultSet Un oggetto Statement può essere creato con il metodo createstatement di Connection 29

30 Interfaccia PreparedStatement Gli oggetti di tipo PreparedStatement possono essere usati per creare query SQL parametriche (parametri di tipo IN) e precompilate ( prepared ) Il valore di ciascun parametro non è specificato nel momento in cui lo statement SQL è definito, ma rimpiazzato dal carattere? È più efficiente perché una volta che la query è preparata, sarà pre-compilata per usi futuri Un oggetto PreparedStatement può essere creato con il metodo preparestatement di Connection 30

31 Interfaccia CallableStatement Gli oggetti di tipo CallableStatement possono essere usati per definire query parametriche con parametri di tipo IN, OUT e INOUT Permettono di eseguire una invocazione a una stored procedure memorizzata sul server DB Un oggetto CallableStatement può essere creato con il metodo preparecall di Connection 31

32 Interfaccia ResultSet L oggetto ResultSet è il risultato di una query di selezione (SELECT) Rappresenta una tabella composta da righe (gli elementi selezionati) e colonne (gli attributi richiesti) Nella versione 1.x di JDBC era possibile accedere a un ResultSet obbligatoriamente dal primo elemento all ultimo e una sola volta Da JDBC 4.x si può accedere in modo casuale alle righe, inserirle, cancellarle e modificarle 32

33 JDBC e DB2 DB2 prevede 2 driver JDBC di tipo two-tier: 1. Net-Driver: com.ibm.db2.jcc.db2driver 2. Driver Java puro : com.ibm.db2.jcc.db2driver entrambi contenuti nel file db2jcc.jar (direttorio C:\Programmi\IBM\SQLLIB\java della macchina client del laboratorio) Il Net-Driver serve per connettersi via rete (ad esempio, mediante il protocollo di rete TCP/IP) a server remoti è un driver universale, ovvero indipendente dalla piattaforma a condizione che questi abbiano attivo il servizio DB2 Jdbc Applet Server Il Driver Java puro permette di connettersi ad istanze DB2 residenti sulla macchina locale o catalogate localmente 33

34 Programmare un applicazione JDBC Passi principali: 1. Importazione package 2. Registrazione driver JDBC 3. Apertura connessione al DB (Connection) 4. Creazione oggetto Statement 5. Esecuzione query e eventuale restituzione oggetto ResultSet 6. Utilizzo risultati 7. Chiusura oggetto/i ResultSet e oggetto/i Statement 8. Chiusura connessione 34

35 1: Importazione package // Questo programma mostra un *semplice esempio* di // applicazione Java (Esempio.java) in grado di eseguire // interrogazioni/aggiornamenti sul database DB2 SAMPLE // utilizzando JDBC //importazione package import java.sql.*; //package JDBC 35

36 2: Registrazione driver JDBC class Esempio { public static void main(string argv[]) { try { // caricamento e registrazione driver Class.forName( com.ibm.db2.jcc.db2driver").newinstance(); 36

37 3: Apertura connessione DB Connection con = null; // URL jdbc:db2:database_alias String url = "jdbc:db2://diva.disi.unibo.it:50000/sample"; if (argv.length == 2) { String userid = argv[0]; String passwd = argv[1]; // connessione con id/passwd forniti dall utente con = DriverManager.getConnection(url, userid, passwd); } else { System.out.println("\nUsage: java Esempio username password\n"); System.exit(0); } 37

38 4. Creazione oggetto Statement // interrogazione table EMPLOYEE System.out.println("Retrieve some data from the database"); Statement stmt = con.createstatement(); 38

39 5. Esecuzione query 6. Utilizzo oggetto ResultSet // esegue la query ResultSet rs = stmt.executequery("select * FROM DB2INST1.EMPLOYEE"); System.out.println("Received results:"); // mostra i risultati // rs.next() = false se non ci sono più righe risultato while (rs.next()) { String number = rs.getstring(1); String name = rs.getstring(2); System.out.print(" empno= " + number); System.out.print(" firstname= " + name); System.out.print("\n"); } 39

40 7. Chiusura oggetti ResultSet e Statement // chiude ResultSet e Statement rs.close(); stmt.close(); // Esecuzione di altre istruzioni SQL // aggiorna il database prova ad aggiornarlo! System.out.println("\n\nUpdate the database... "); stmt = con.createstatement(); int rowsupdated = stmt.executeupdate("update DB2INST1.EMPLOYEE SET firstname = 'SHILI WHERE empno = '000010'"); System.out.print("Changed "+rowsupdated); if (1 == rowsupdated) System.out.println(" row."); else System.out.println(" rows."); stmt.close(); // chiude Statement 40

41 8. Chiusura connessione // chiude Connection con.close(); } // try catch( Exception e ) { e.printstacktrace(); } } // main } // classe Scopo di questo semplice esempio didattico è solo quello di evidenziare l uso di base delle API JDBC Come vedremo meglio in laboratorio connessione, statement, resultset devono essere sempre chiusi dopo essere stati usati (rilasciamo risorse!!) Per aver questa garanzia, effettuiamo queste operazioni sempre nella clausola finally Ogni metodo JDBC lancia una eccezione; tali eccezioni possono essere gestite rilanciando una eccezione di livello logico opportuno 41

42 Oggetto Statement Un oggetto Statement fornisce tre metodi per eseguire una query SQL: (StatementObj.) executequery(stmt SQL), per statement che generano un unico result set (SELECT) (StatementObj.) executeupdate(stmt SQL), per statement di modifica (UPDATE, INSERT, ecc.) (StatementObj.) execute(stmt SQL), per statement che generano più di un risultato o più di un contatore di aggiornamento 42

43 executequery Usato tipicamente per query di tipo SELECT Restituisce un oggetto ResultSet 43

44 executeupdate Usato per statement di tipo DML quali INSERT, UPDATE o DELETE e per statement di tipo DDL quali CREATE TABLE e DROP TABLE Restituisce un intero rappresentante il numero di righe che sono state inserite/aggiornate/cancellate contatore di aggiornamento In caso di statement di tipo DDL, restituisce sempre il valore 0 44

45 execute Usato quando la query restituisce più di un risultato o più di un contatore di aggiornamento Utilizza i seguenti metodi: (StatementObj.) getresultset() per ottenere il result set successivo (StatementObj.) getupdatecount() per ottenere il contatore di aggiornamento successivo (StatementObj.) getmoreresults() per sapere se ci sono altri result set o contatori di aggiornamento Restituisce true se il primo risultato è di tipo ResultSet; false se il risultato è di tipo Count o non ci sono più risultati 45

46 Oggetto ResultSet Un oggetto ResultSet contiene il risultato di una query SQL (cioè una tabella) Un oggetto ResultSet mantiene un cursore alla riga corrente Per ottenere un valore relativo alla riga corrente: (ResultSetObj.) getxxx(column-name) (ResultSetObj.) getxxx(column-number) Per spostare il cursore dalla riga corrente a quella successiva: (ResultSetObj.) next() (restituisce true in caso di successo; false se non ci sono più righe nell insieme risultato) 46

47 I metodi getxxx Permettono la lettura degli attributi di una tabella getbyte getshort getint getlong getfloat getdouble getbigdecimal getboolean getstring getbytes getdate gettime gettimestamp getasciistream getunicodestream getbinarystream getobject 47

48 Controllo sui valori NULL I valori NULL SQL sono convertiti in null, 0, o false, dipendentemente dal tipo di metodo getxxx Per determinare se un particolare valore di un risultato corrisponde a NULL in JDBC: Si legge la colonna Si usa il metodo (ResultSetObject.) wasnull() 48

49 Controllo sui tipi di dato Il dialogo tra una applicazione Java e i DB sottostanti richiede che i tipi di dato SQL siano mappati in corrispondenti tipi di dato Java e viceversa. La conversione (SQL2Java) riguarda tre categorie: Tipi SQL che hanno diretti equivalenti in Java (es. il tipo SQL INTEGER è equivalente al tipo Java int) Tipi SQL che possono essere convertiti negli equivalenti tipi Java (es. i tipi SQL CHAR e VARCHAR possono essere convertiti nel tipo Java String) Tipi SQL che sono unici (una minoranza) e che necessitano la creazione di uno speciale oggetto Java (es. il tipo SQL DATE si converte nell oggetto Date definito dall omonima classe Java) 49

50 Mapping SQL2Java SQL type Java Type SQL Type Java Type CHAR String BIGINT long VARCHAR String REAL float LONGVAR CHAR String FLOAT DOUBLE double double NUMERIC java.math.big Decimal BINARY VARBINARY byte[] byte[] DECIMAL java.math.big Decimal LONGVAR BINARY byte[] BIT boolean DATE java.sql.date TINYINT byte TIME java.sql.time SMALLINT INTEGER short int TIMESTAMP java.sql.time stamp 50

51 Oggetto PreparedStatement Usato quando la query SQL prende uno o più parametri come input, o quando una query semplice deve essere eseguita più volte L interfaccia PreparedStatement estende l interfaccia Statement ereditandone tutte le funzionalità. In più sono presenti metodi per la gestione dei parametri L oggetto viene creato con l istruzione Connection.prepareStatement(stmt SQL) I parametri vengono poi settati mediante il metodo (StatementObj.) setxxx(n,value) La query pre-compilata viene eseguita mediante i metodi executequery(), executeupdate()o execute() senza bisogno di passare alcun parametro!! 51

52 PreparedStatement: Esempio I parametri sono specificati con? Esempio: PreparedStatement ps = con.preparestatement( "UPDATE MyTable SET a =? WHERE b =?"); Per istanziare i parametri? (necessariamente prima dell esecuzione): ps.setint(1, 20); ps.setint(2,100); Per eseguire lo statement: int res = ps.executeupdate(); 52

53 I metodi setxxx Permettono l assegnamento dei parametri di uno statement SQL setbyte setshort setint setlong setfloat setdouble setbigdecimal setboolean setnull setstring setbytes setdate settime settimestamp setasciistream setunicodestream setbinarystream setobject 53

54 Mapping Java2SQL Java Type SQL type Java Type SQL type String VARCHAR or LONG- VARCHAR float double REAL DOUBLE java.math. BigDecimal NUMERIC byte[] VARBINARY or LONGVARBINARY boolean byte short BIT TINYINT SMALLINT java.sql.date java.sql.time DATE TIME int long INTEGER BIGINT java.sql.timestamp TIMESTAMP 54

55 Il problema dell SQL injection Cosa succede se, data una query con parametri di input dell utente (es. tramite interfaccia Web), questi ha la possibilità di agire direttamente sul valore dell input di tipo stringa (oggetto String), aggiungendo, ad esempio, apici e altre istruzioni di controllo?? Può inserire istruzioni arbitrarie che verranno eseguite dal DBMS!!! Esempio: Statement = SELECT * FROM users WHERE name = + username + ; con la variabile username assegnata al valore: a ;DROP TABLES users; 55

56 SQL injection È una tecnica che sfrutta la vulnerabilità a livello di sicurezza dello strato DB di una applicazione Tale vulnerabilità è presente quando i dati di input dell utente sono: Filtrati in modo incorretto per la verifica di caratteri literal escape nelle stringhe Non sono fortemente tipizzati e/o controllati i vincoli di tipo SQL injection in quanto l'utente può iniettare statement SQL arbitrari con risultati catastrofici: divulgazione di dati sensibili o esecuzione di codice Per proteggere le nostre applicazioni dall SQL injection, i dati di input dell utente NON devono essere direttamente incastonati all interno di Statement SQL 56

57 Prevenire SQL injection A prevenzione del problema, l interfaccia PreparedStatement permette di gestire in modo corretto anche l inserimenti di dati ostili Statement parametrizzati che permettono di lavorare con parametri (o variabili bind) invece che di incastonare i dati di input dell utente direttamente nello statement SQL statement è fisso i dati di input dell utente sono assegnati ai parametri (binding) mediante l invocazione dei metodi setxxx(n,value) 57

58 La storia del piccolo Bobby Tables (From the comic strip xkcd) School: "Hi, this is your son's school. We're having some computer trouble." Mom: "Oh, dear -- Did he break something?" School: "In a way. Did you really name your son Robert'); DROP TABLE Students;--?" Mom: "Oh. Yes. Little Bobby Tables we call him." School: "Well, we've lost this year's student records. I hope you're happy." Mom: "And I hope you've learned to sanitize your database inputs." (Alt-text: "Her daughter is named Help I'm trapped in a driver's license factory.") C è solo un modo per evitare attacchi di tipo Bobby Tables Non creare mai statement SQL che includono dati di input utente Usare sempre chiamate SQL parametrizzate (PreparedStatement) 58

59 Riferimenti Sito Sun - The Java Tutorial /index.html Sito Sun Java SE - Java Database Connectivity (JDBC) base/index.jsp Per la documentazione relativa ai pakage java.sql e javax.sql, fare riferimento a Java2Docs Atzeni, Ceri, Paraboschi, Torlone. Basi di dati: Modelli e linguaggi di interrogazione, McGraw-Hill Italia,

Sistemi Informativi L-A. Home Page del corso: Versione elettronica: JDBC.pdf. Sistemi Informativi L-A

Sistemi Informativi L-A. Home Page del corso:  Versione elettronica: JDBC.pdf. Sistemi Informativi L-A Interfaccia JDBC Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: JDBC.pdf Sistemi Informativi L-A come usare SQL (1) Le istruzioni SQL possono

Dettagli

Interfaccia JDBC. Sistemi Informativi L-A. Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: JDBC.

Interfaccia JDBC. Sistemi Informativi L-A. Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: JDBC. Interfaccia JDBC Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: JDBC.pdf Sistemi Informativi L-A come usare SQL (1) Le istruzioni SQL possono

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 10 Raffaella Gentilini 1 / 46 Sommario 1 Introduzione: DB e Programmazione 2 3 2 / 46 Approcci alla Programmazione di un DB Meccanismi Disponibili 1 Linguaggi

Dettagli

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico JDBC Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JDBC JDBC (Java Database Connectivity) è una API Java per accedere ed elaborare dati in una sorgente dati (di solito un db

Dettagli

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione Interfacce DBMS in breve Corso di BD1 Ripasso comandi applicazione JDBC Manipolazione estensioni OR in JDBC Interfacce per DBMS Problema: Far accedere un applicazione ad una base di dati Soluzione: Librerie

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009 Servlet & JDBC Alberto Belussi anno accademico 2008/2009 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC (Java Database Connectivity). http://java.sun.com/javase/technologies/database

Dettagli

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso Servlet & JDBC 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC (Java Database Connectivity).

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface

Dettagli

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali Java java database connectivity -- jdbc G. Prencipe prencipe@di.unipi.it Indice JDBC: Java Data Base Connectivity connessioni a basi di dati esecuzione di statement SQL accesso ai result set JDBC: Java

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

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

Accesso a Database con JDBC

Accesso a Database con JDBC 1 Sommario Accesso a Database con JDBC Introduzione architettura generale di riferimento flusso tipico delle applicazioni ODBC/JDBC ODBC architettura il flusso generale di un applicazione ODBC JDBC architettura

Dettagli

JDBC per l accesso Java a DB. Tito Flagella tito@link.it

JDBC per l accesso Java a DB. Tito Flagella tito@link.it JDBC per l accesso Java a DB Tito Flagella tito@link.it JDBC fornisce una libreria standard per l accesso a database relazionali Non è un acronimo ufficiale ma è comunemente interpretato come Java DataBase

Dettagli

JDBC Matteo Magnani, Danilo Montesi Università di Bologna. Dati relazionali e JAVA: API JDBC

JDBC Matteo Magnani, Danilo Montesi Università di Bologna. Dati relazionali e JAVA: API JDBC Dati relazionali e JAVA: API JDBC 1 Obiettivi Impareremo a utilizzare l API JDBC, che permette a un programma scritto in Java di connettersi e manipolare dati relazionali. Motivazioni della nascita di

Dettagli

Dominio applicativo. Progettazione. v SQL incluso in codice applicativo v Embedded SQL v Cursori v Dynamic SQL v JDBC v Stored procedures

Dominio applicativo. Progettazione. v SQL incluso in codice applicativo v Embedded SQL v Cursori v Dynamic SQL v JDBC v Stored procedures Dominio applicativo (Capitolo 6) v SQL incluso in codice applicativo v Embedded SQL v Cursori v Dynamic SQL v JDBC v Stored procedures Basi di dati 1 Docente Claudia Amari 1 Progettazione PROGETTAZIONE

Dettagli

DBMS ED APPLICAZIONI (CAPITOLO 6) SQL incluso in codice applicativo Embedded SQL Cursori Dynamic SQL JDBC Stored procedures

DBMS ED APPLICAZIONI (CAPITOLO 6) SQL incluso in codice applicativo Embedded SQL Cursori Dynamic SQL JDBC Stored procedures 1 DBMS ED APPLICAZIONI (CAPITOLO 6) SQL incluso in codice applicativo Embedded SQL Cursori Dynamic SQL JDBC Stored procedures Progettazione 2 Dominio Applicativo PROGETTAZIONE CONCETTUALE PROGETTAZIONE

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

JDBC Un API JAVA per accedere a Basi di Dati Relazionali. Contenuti. Cos è JDBC? Introduzione a JDBC. Perché JDBC. Inside JDBC.

JDBC Un API JAVA per accedere a Basi di Dati Relazionali. Contenuti. Cos è JDBC? Introduzione a JDBC. Perché JDBC. Inside JDBC. JDBC Un API JAVA per accedere a Basi di Dati Relazionali 1 Contenuti Introduzione a JDBC Perché JDBC R, Architetture client-server, ODBC Inside JDBC Driver, classi, interfacce Un esempio 2 Cos è JDBC?

Dettagli

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO 8- Programmazione di una base di dati attraverso JDBC Introduzione ai differenti approcci - JDBC: Architettura e Programmazione Introduzione Nella pratica gli utenti finali accedono al contenuto di una

Dettagli

Scheda 15 Accedere ai DataBase con JDBC

Scheda 15 Accedere ai DataBase con JDBC Scheda 15 Accedere ai DataBase con JDBC G IOVANNI PULITI Panoramica: che cosa è JDBC La API JDBC, introdotta per la prima volta con il JDK 1.0, è una API che permette di accedere a database relazionali

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi brocchi@dsi.unifi.it 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

Programmazione Java: JDBC

Programmazione Java: JDBC Programmazione Java: JDBC romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Introduzione Risorse Driver Contesto Applicativo SQL Classi e interfacce Passi» Registrare un driver» Stabilire

Dettagli

JDBC: SQL nei linguaggi di programmazione

JDBC: SQL nei linguaggi di programmazione JDBC: SQL nei linguaggi di programmazione Matteo Cannaviccio mcannaviccio@gmail.com Basi di Dati I 2016/17 Panoramica 1. Dialogare con un DBMS Applicazioni software DBMS 2. Introduzione a JDBC Scopo

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

Corso di Informatica Modulo T3 B2 - Database in rete

Corso di Informatica Modulo T3 B2 - Database in rete Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual

Dettagli

MODULO 2. Query normali e parametriche Query di:

MODULO 2. Query normali e parametriche Query di: MODULO 2 TITOLO DBMS e SQL In questo Modulo si affronta lo studio dei DBMS Access e MySQL. In particolare per Access, si descrive come progettare, impostare e modificare gli strumenti di lavoro (tabelle,

Dettagli

Esempio di architettura software

Esempio di architettura software Esempio di architettura software Corso di Principi di Progettazione del Software, a.a. 2012/13 29 novembre 2016 Ing. Roberto Vergallo 1 Esempio di architettura software View (GUI) Action Listener Business

Dettagli

Laboratorio di Sistemi Fondamenti di JDBC (parte1) Java. Fondamenti di JDBC

Laboratorio di Sistemi Fondamenti di JDBC (parte1) Java. Fondamenti di JDBC Fondamenti di JDBC Concetto di driver Il dialogo fra applicazione e DBMS non è mai gestito direttamente ma passa in genere per un opportuno modulo software chiamato driver che agisce da interfaccia fra

Dettagli

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi: SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i

Dettagli

DBMS ed Applicazioni Motivazioni

DBMS ed Applicazioni Motivazioni DBMS ed Applicazioni Motivazioni Sin ora abbiamo visto SQL come linguaggio per interrogare DBMS da interfaccia interattiva Nella pratica, un efficace sfruttamento delle potenzialità dei DBMS deriva dalla

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

ARCHITETTURA DI UN DBMS

ARCHITETTURA DI UN DBMS ARCHITETTURA DI UN DBMS Modelli di dati Un approccio con basi di dati fornisce un certo livello di astrazione dei dati Nasconde i dettagli sulla memorizzazione dei dati stessi Un modello dei dati fornisce

Dettagli

SQL e applicazioni. Capitolo 8. SQL e linguaggi di programmazione. Applicazioni ed SQL: architettura. Una difficoltà importante.

SQL e applicazioni. Capitolo 8. SQL e linguaggi di programmazione. Applicazioni ed SQL: architettura. Una difficoltà importante. SQL e applicazioni Capitolo 8 Applicazioni tradizionali In applicazioni complesse, l utente non vuole eseguire comandi SQL, ma programmi, con poche scelte SQL non basta, sono necessarie altre funzionalità,

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

JDBC: Java e database.

JDBC: Java e database. JDBC: Java e database. Introduzione all architettura e esempi di utilizzo 1.0 INTRODUZIONE ALL ARCHITETTURA JDBC è (anche se non ufficialmente riconosciuto da Sun) l acronimo per Java DataBase Connectivity.

Dettagli

Viste in MySQL e accesso a DB da Java

Viste in MySQL e accesso a DB da Java Viste in MySQL e accesso a DB da Java LABORATORIO DI BASI DI DATI A.A. 2015/2016 Dott. Claudio Venturini Contenuti parzialmente riadattati e integrati a partire da slide gentilmente concesse dal Dott.

Dettagli

Open Database Connectivity (ODBC)

Open Database Connectivity (ODBC) Open Database Connectivity (ODBC) Open Database Connectivity (ODBC), proposto dalla Microsoft nel 1991, fornisce un interfaccia applicativa standard che permette ad una generica applicazione di accedere

Dettagli

Applicazioni tradizionali

Applicazioni tradizionali 1 BASI DI DATI Paolo Zirilli Applicazioni tradizionali Concetti di questa lezione SQL nel codice applicativo SQL incluso in codice applicativo Embedded SQL Cursori Dynamic SQL JDBC Stored procedures I

Dettagli

SQL nei linguaggi di programmazione

SQL nei linguaggi di programmazione SQL nei linguaggi di programmazione Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia, Capitolo 6 SQL in Linguaggi di Programmazione L uso diretto

Dettagli

Sviluppo di applicazioni per basi di dati

Sviluppo di applicazioni per basi di dati Sviluppo di applicazioni per basi di dati 1 Sviluppo di applicazioni per basi di dati Quattro parti: Gestione dati Business rules (vincoli di integrità e dati derivati) Logica applicativa Interfaccia utente

Dettagli

Programmazione Java Avanzata Spring - JDBC

Programmazione Java Avanzata Spring - JDBC Programmazione Java Avanzata Spring - JDBC Ing. Gianluca Caminiti Riferimenti Spring http://www.springsource.org/ (scaricate il reference) Beginning Spring 2 - From Novice to Professional. APress. 2008

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1 ECDL - Database Introduzione European Computer Driving Licence - Modulo 5 - Database LEZIONE 1 Informazioni sul corso orario: Giovedì - 14.30-16.30 materiale: http://www.fotoboni.com/carlo/ docente: webmaster@fotoboni.com

Dettagli

Accesso ad un db con JDBC da java

Accesso ad un db con JDBC da java Per accedere al database MySql abbiamo utilizzato l interfaccia mysqli messa a disposizione dal linguaggio php specificatamente per tale linguaggio, che fornisce tutte le funzioni per accedere ai dati

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

Capitoli 8 e 9. SQL embedded. Applicazioni tradizionali Applicazioni Internet. Sistemi di basi di dati Raghu Ramakrishnan, Johannes Gehrke

Capitoli 8 e 9. SQL embedded. Applicazioni tradizionali Applicazioni Internet. Sistemi di basi di dati Raghu Ramakrishnan, Johannes Gehrke Capitoli 8 e 9 Applicazioni tradizionali Applicazioni Internet SQL embedded SQL nel codice applicativo I comandi SQL possono essere chiamati dall interno di un programma in un linguaggio ospite (ad esempio

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

JDBC. Dispense per il corso di Ingegneria del Web

JDBC. Dispense per il corso di Ingegneria del Web JDBC Dispense per il corso di Ingegneria del Web Revisione 05/11 Giuseppe Della Penna (giuseppe.dellapenna@di.univaq.it) Dipartimento di Informatica Università degli studi dell'aquila Java Database Connectivity:

Dettagli

PRIMO MODULO. DURATA: 80 ore CONTENUTI

PRIMO MODULO. DURATA: 80 ore CONTENUTI 0 PRIMO MODULO DURATA: 80 ore CONTENUTI 1. Introduzione alla programmazione a. Cosa è la programmazione strutturata b. Strutture dati c. Come si affronta una problematica da risolvere d. Quali sono i passi

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Basi di Dati Architetture Client/Server D B M G Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta l intelligenza

Dettagli

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura SQL e applicazioni Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 5: SQL nei linguaggi di programmazione 21/10/2002 In applicazioni complesse, l utente non vuole eseguire

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, JDBC e applicazioni 31/05/2004

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, JDBC e applicazioni 31/05/2004 Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Approfondimenti dal capitolo 5: JDBC e applicazioni 31/05/2004 Un esempio: package catenanegozi (Piccola parte di) sistema informativo

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

Testing delle classi. MySQL DBMS

Testing delle classi. MySQL DBMS Testing delle classi Corso di Principi di Progettazione del Software, a.a. 2015/16 17 novembre 2015 Ing. Roberto Vergallo 1 MySQL DBMS MySQL Community Server http://www.mysql.it/downloads/mysql/5.1.html

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

Prof. Pagani corrado JAVA

Prof. Pagani corrado JAVA Prof. Pagani corrado JAVA NASCITA DI JAVA Java è stato creato, a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, da un gruppo di esperti sviluppatori capitanati da

Dettagli

Le Basi di Dati Attive

Le Basi di Dati Attive Le Basi di Dati Attive Basi di dati: Architetture e linee di evoluzione - Seconda edizione Capitolo 5 Appunti dalle lezioni SQL in Linguaggi di programmazione L uso diretto dell interprete SQL è tipicamente

Dettagli

Funzioni scalari in SQL. Capitolo 5. coalesce. nullif. Altre funzioni scalari. case

Funzioni scalari in SQL. Capitolo 5. coalesce. nullif. Altre funzioni scalari. case Funzioni scalari in SQL Capitolo 5 Costrutti definiti in SQL-2 che estendono la sintassi delle espressioni nella target list coalesce nullif case Prof. Stefano Paraboschi Vengono valutate per ogni riga

Dettagli

Lezione 9. Applicazioni tradizionali

Lezione 9. Applicazioni tradizionali Lezione 9 Applicazioni tradizionali Pag.1 Sommario Concetti trattati in questa lezione: SQL nel codice applicativo Cursori API native ODBC Pag.2 SQL nel codice applicativo I comandi SQL possono essere

Dettagli

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura SQL e applicazioni Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, 1996-2002 Capitolo 5: SQL nei linguaggi di programmazione (versione preliminare e parziale) 16/10/2002 In applicazioni complesse,

Dettagli

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di Dati Esercitazione JDBC. Giugno 2007 Basi di Dati Esercitazione JDBC Giugno 2007 Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello) Catalogo (CodiceFornitore,

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia

Dettagli

Basi di dati Modelli e linguaggi di interrogazione

Basi di dati Modelli e linguaggi di interrogazione Paolo Atzeni Stefano Ceri Stefano Paraboschi Riccardo Torlone Basi di dati Modelli e linguaggi di interrogazione web site McGraw-Hill IUAV - VENEZIA H 9882 BIBLIOTECA CENTRALE Paolo Atzeni Stefano Ceri

Dettagli

Corso di Laboratorio di Applicazioni Informatiche. Progetti di Basi di Dati a.a. 2008-9

Corso di Laboratorio di Applicazioni Informatiche. Progetti di Basi di Dati a.a. 2008-9 Corso di Laboratorio di Applicazioni Informatiche Progetti di Basi di Dati a.a. 2008-9 Outline Obbiettivi Tecnologie Struttura di un progetto Esempi Deadlines Conlusioni Obbiettivi Applicare le conoscenze

Dettagli

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano) Come contattarmi Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano) Telefono : 0521 / 90 5731 Email : stefano.cagnoni@unipr.it Sito del corso : http://www.ce.unipr.it/people/cagnoni/didattica/basidati

Dettagli

ASP e Database. A cura di Michele Cavalieri

ASP e Database. A cura di Michele Cavalieri ASP e Database A cura di Michele Cavalieri (fonte http://www.aspitalia.com/articoli/db/introduzione.aspx ) Un aspetto fondamentale di ASP è l'utilizzo dei componenti, che non sono altro che ActiveX come

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

R. Orsini - A. Roncato - F. Dalla Libera

R. Orsini - A. Roncato - F. Dalla Libera Interfacce per basi di dati e integrazione di sistemi informativi R. Orsini - A. Roncato - F. Dalla Libera Workshop del Dipartimento di Informatica 2 Marzo 2006 Aree e progetti Progetto Rewerse: Query

Dettagli

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori. Tecnologia delle Basi Dati Analisi del dbms Postgresql. Luigi Cestoni Prima Parte Descrizione del Database Abbiamo realizzato un database costituito da quattro tabelle: 1. dipendente( id,nome,cognome,eta,telefono,idufficio)

Dettagli

Basi di Dati. Concetti e Principi Generali. Maria Mirto

Basi di Dati. Concetti e Principi Generali. Maria Mirto Basi di Dati Concetti e Principi Generali Maria Mirto Organizzazione dei Dati Archivi o file Procedure di accesso in qualunque linguaggio di programmazione Duplicazione dati: ridondanza incoerenza formati

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

Programmazione Java Avanzata

Programmazione Java Avanzata Programmazione Java Avanzata Accesso ai Dati Ing. Giuseppe D'Aquì Testi Consigliati Eclipse In Action Core J2EE Patterns - DAO [http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html]

Dettagli

Programma Master Programmatore Java

Programma Master Programmatore Java Programma Master Programmatore Java PCAcademy Via Capodistria 12 Tel.: 06.97.84.22.16 06.85.34.44.76 Cell. 393.93.64.122 - Fax: 06.91.65.92.92 www.pcacademy.it info@pcacademy.it Informazioni generali La

Dettagli

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,

Dettagli

JDBC: SQL NEI LINGUAGGI DI PROGRAMMAZIONE

JDBC: SQL NEI LINGUAGGI DI PROGRAMMAZIONE JDBC: SQL NEI LINGUAGGI DI PROGRAMMAZIONE Disheng Qiu disheng.qiu@gmail.com SQL e Applicazioni In applicazioni complesse, l utente non vuole eseguire comandi SQL, ma programmi, con poche scelte SQL non

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

DBMS. Alice Pavarani

DBMS. Alice Pavarani DBMS Alice Pavarani DBMS Insieme di programmi che offrono gli strumenti per gestire una base di dati Permette di: definire la struttura delle tabelle recuperare le informazioni manipolare i dati memorizzati

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

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Esercitazione PostgreSQL Dopo aver lanciato il client grafico pgadmin III di PostgreSQL svolgere le operazioni descritte nel seguito, tenendo presenti i suggerimenti forniti

Dettagli

JAVA JDBC. Andrea BEI (andrea.bei@libero.it)

JAVA JDBC. Andrea BEI (andrea.bei@libero.it) JAVA JDBC Andrea BEI (andrea.bei@libero.it) JDBC: API JDBC (Java DataBase Connectivity) è una API per l accesso a DataBase relazionali sviluppata da SUN. Permette ad applicazioni JAVA di eseguire istruzioni

Dettagli

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive Basi di dati attive Paolo Atzeni Stefano Ceri Basi di dati attive BD con componente per la gestione di regole Evento- Condizione-Azione (regole di produzione): eventi: normalmente modifiche della base

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Tecnologia e Applicazioni Internet 2011/12

Tecnologia e Applicazioni Internet 2011/12 Tecnologia e Applicazioni Internet 2011/12 Lezione 4 - Persistenza Matteo Vaccari http://matteo.vaccari.name/ matteo.vaccari@uninsubria.it Perché usare un DB relazionale? Per l accesso concorrente ai dati

Dettagli

Connessione con MySQL

Connessione con MySQL Connessione con MySQL Architettura Server-Side Eventuali parametri cookie sessioni Elaborazione SELECT... DATABASE Quando i dati sono molti e la persistenza deve andare altre la sessione o la durata

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Sistemi informativi 2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 4 6 2007 Politecnico di Torino 1 7 8 9 10 Sistema informatico Nei sistemi informatici,

Dettagli

Object-Relational Mapping

Object-Relational Mapping Object-Relational Mapping Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2009-2010 Approccio

Dettagli

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE PER IL WEB. Programmazione Web 1 DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca

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