PROVA FINALE Ingegneria del software



Documenti analoghi
Introduzione JDBC interfaccia java.sql driver caricare i driver

JDBC. A. Bechini Accesso a DataD con Java

Laboratorio di reti II: Gestione di database lato server

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

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

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

Esercitazione su JDBC

JDBC versione base. Le classi/interfacce principali di JDBC

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

JDBC. Java Database Connection. (dal corso dei Servizi Web) Java Database Connection (JDBC) - I. JDBC e ODBC. Java Database Connection (JDBC) - II

Programmazione Java Avanzata Spring - JDBC

JDBC di base. Le classi/interfacce principali di JDBC

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

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Java: la libreria delle classi

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

Lezione 9. Applicazioni tradizionali

Scheda 15 Accedere ai DataBase con JDBC

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans

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

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

Basi di Dati: Corso di laboratorio

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

Tecnologie di Sviluppo per il Web

DBMS ed Applicazioni Motivazioni

Tecnologia e Applicazioni Internet 2011/12

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

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Al giorno d oggi, i sistemi per la gestione di database

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

Esercitazione 4 JDBC

Informatica per le discipline umanistiche 2 lezione 10

Database e reti. Piero Gallo Pasquale Sirsi

Programmazione Java Avanzata

Access. P a r t e p r i m a

Laboratorio di Basi di Dati e Web

DBMS (Data Base Management System)

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Corso sul linguaggio SQL

19. LA PROGRAMMAZIONE LATO SERVER

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Dispensa di database Access

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

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

JDBC. Dispense per il corso di Ingegneria del Web

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

Esercitazione 8. Basi di dati e web

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

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

Programmazione Java: JDBC

User Tools: DataBase Manager

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Laboratorio di Basi di Dati

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Accesso a Database con JDBC

Progetto di Basi di Dati e Multimidia Laboratorio Struttura dell applicazione web

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Capitolo 13. Interrogare una base di dati

Esercitazione sulle libpq - libreria C per PostgreSQL

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Servlet & JDBC 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 / Servlet: interazione con un DBMS

Lezione V. Aula Multimediale - sabato 29/03/2008

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Corso di Informatica Modulo T3 B2 - Database in rete

Accesso alle Basi di Dati

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

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Installazione e configurazione di Java DB in Windows (7)

Volumi di riferimento

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

CONCETTO DI ANNIDAMENTO

Architettura MVC-2 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 /

Socket & RMI Ingegneria del Software - San Pietro

Servlet & JDBC 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 /

Basi di Dati Esercitazione JDBC. Giugno 2007

Transazioni - Parte 1

GERARCHIE RICORSIVE - SQL SERVER 2008

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Le query. Lezione 6 a cura di Maria Novella Mosciatti

MySQL Database Management System

SQL/OLAP. Estensioni OLAP in SQL

Tipi MULTISET: accesso

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Analisi e sviluppo di un componente per un ESB open source

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

Ingegneria del Software: JDBC.

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

Introduzione ai database relazionali

Lezione 8. Metadati, Viste e Trigger

Manuale utente Volta Control

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Concetti fondamentali dei database database Cos'è un database Principali database

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Transcript:

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 Java ai database relazionali E' costituito da un insieme di classi e interfacce scritte in Pure Java Si basa sul concetto di driver di database Il driver è una implementazione JDBC specifica per database Permette ai diversi fornitori di database di estendere lo standard con i loro specifici driver JDBC (Derby, PostgreSQL, Oracle, MySQL, MS SQL Server )

Cosa fa JDBC 3 Le principali funzionalità di JDBC sono: Stabilisce una connessione con il database Invia comandi SQL Processa il risultato dei comandi inviati

Step dell utilizzo di JDBC 4 Come si usa: Import del package java.sql.* Registrazione del driver del database da utilizzare Apertura connessione Creazione oggetto Statement Esecuzioni di Create, Drop, Delete, Insert e Update Esecuzione di Select e recupero dati dal ResultSet Utilizzo ResultSet Chiusura risorse ResultSet e Statement Chiusura connessione

Registrazione del driver 5 Per utilizzare un driver di database un'applicazione lo deve rendere disponibile applicazione (si chiama registrazione del driver) Questa operazione deve essere fatta prima di creare la prima connessione al database Class.forName(DRIVER).newInstance() La stringa DRIVER è database dependent Es. Derby org.apache.derby.jdbc.embeddeddriver Postgres org.postgresql.driver

Connessione 6 Per creare una connessione si utilizza il metodo getconnection(string url, String user, String pass) della classe java.sql.drivermanager Tutti i metodi di JDBC lanciano l'eccezione java.sql.sqlexception Una connessione rappresenta una sessione con uno specifico db; possono quindi gestire più connessioni contemporanee con uno o più db E' possibile: ottenere informazioni sulla struttura del db (metadata) gestire le transazioni

Url del JDBC 7 Per effettuare la connessione è necessario costruire URL da utilizzare nel metodo getconnection: La URL contiene varie informazioni indirizzo (e porta) dove risiede il database nome dell'istanza del database Es: jdbc:postgresql://[host]:[porta]/[dbname] jdbc:derby:[pathaldatabase] //Carico il driver solo Class.forName(DRIVER).newInstance(); //Apro la connessione Connection conn = DriverManager.getConnection(URL, USER, PASS);

Ricapitoliamo 8 DriverManager getconnection( url, user, passwd) : Connection crea <<interface>> Connection createstatement(): Statement close( ) isclosed( ): boolean getcatalog( ): String DerbyConnection PostgreSQLConnection

L interfaccica Statment 9 Per eseguire delle query è necessario creare un instanza Statement: Statement st = connessione.createstatement() Lo Statement offre metodi indipendenti dal DB per eseguire le diverse tipologie di query SQL: ResultSet executequery(string sql) interrogazione SQL con risultato int executeupdate(string sql) interrogazione senza risultato (creazione tabelle, aggiornamento tabelle,...), restituisce il numero di tuple coinvolte nell operazione boolean execute(string sql) invocazione procedure che restituiscono risultati multipli, o stringhe SQL sconosciute

L interfaccica Resulset 10 È ottenuta come parametro di ritorno del metodo executequery in una query di selezione Un ResultSet fornisce l'accesso ai dati di una tabella generati eseguendo uno Statement Ogni Statement gestisce un solo ResultSet alla volta Il risultato (della query) è rappresentato come enumerazione di tuple con cursore di scorrimento delle tuple Si possono ottenere i dati utilizzando i get dei datatype SQL definiti in Java

Recupero dei dati dal Resulset 11 I tipi di dati sono identificati da costanti intere della classe java.sql.types L interfaccia ResultSet offre metodi getxxx() per ottenere i valori di campi di tipi diversi. I metodi effettuano il mapping da tipi JDBC a tipi java: getstring(string columnname), getstring(int colnumber) getdate(string columnname), getdate(int colnumber) getint(string columnname), getint(int colnumber) geturl(string columnname), geturl(int colnumber) getobject(string columnname), getobject(int colnumber) Attenzione le colonne sono numerate a partire da 1

Mapping dei principali DataType SQL <-> Java 12 JDBC DataType Utilizzo SQL DataType Java DataType DATALINK Rappresenta SQL DATALINK DATALINK java.net.url DATE Data strutturata come giorno, DATE java.sql.date mese ed anno VARCHAR Stringa di lunghezza variabile VARCHAR String INTEGER interi a 32-bit con segno INTEGER int NULL Rappresenta NULL values NULL null per oggetti java, 0 per numeri, false per boolean JAVA_OBJECT Memorizzare oggetti Java Tipi definiti dall utente (solo negli ORDBMS) DOUBLE floating-point, doppia precisione con mantissa a 15 bit DOUBLE PRECISION Object double

Esempio 13 String DRIVER = "org.apache.derby.jdbc.embeddeddriver"; String URL = "jdbc:derby:databasedir", USER = "user", PASS = "pass" ; Class.forName(DRIVER).newInstance(); Connection connessione = DriverManager.getConnection(URL, USER, PASS); //Creo lo statement Statement st = connessione.createstatement(); //Eseguo una query di update st.executeupdate("update tabella SET numero = 0 WHERE stringa = 'prova' "); //Eseguo una query di select ResultSet rs = st.executequery("select stringa, numero FROM tabella "); //Scandisco il risultato while(rs.next()){ String stringaletta = rs.getstring(1); Integer interoletta = rs.getint( numero ); }

Metadati 14 Da ogni Resulset è possibile recuperare l interfaccia ResulSetMetadata per ispezionare i metadati ResultSetMetaData metadata = resulset.getmetadata(); I metodi di ispezione dei metadati del risultato sono: String getcatalogname() String gettablename() int getcolumncount() String getcolumnname() int getcolumntype(),

Chiusura delle risorse 15 Le connessioni sono risorse preziose per cui vanno rilasciate appena possibile Lo stesso vale per Statement e ResultSet La chiusura avviene utilizzando il metodo close() Connection.close() Statement.close(); ResultSet.close(); Una connessione aperta e inutilizzata spreca risorse

Esempio 16 Class.forName(DRIVER).newInstance(); Connection connessione = DriverManager.getConnection(URL, USER, PASS); Statement st = connessione.createstatement(); st.executeupdate( UPDATE tabella SET numero = 0 WHERE stringa = prova ); ResultSet rs = st.executequery( SELECT stringa, numero FROM tabella ); while(rs.next()){ String stringaletta = rs.getstring(1); Integer interoletta = rs.getint( numero ); } //Chiudo Resulset, Statement e Connection rs.close(); st.close(); connessione.close();

PreparedStatement 17 Sono statement parametrizzati utili quando a tempo di compilazione non si hanno info necessarie per specificare completamente la query si vuole compilare uno statement una sola volta, e poi eseguirlo più volte sostituendo i valori dei parametri al momento della esecuzione (sostituire parametri in più invocazioni dello stesso statement) Es: SELECT <select_fields> FROM <table_name> WHERE USER_ID =? (il punto di domanda viene sostituito a runtime con il valore)

PreparedStatement / 2 18 Sono istanziati dal metodo preparestatement(string sql) della classe Connection PreparedStatement offre I metodi ResultSet executequery(string sql) int executeupdate(string sql) boolean execute(string sql) setstring(int i, String s) assegna all i-mo parametro unbound la stringa s setdate(int parnumber, java.sql.date date) assegna all i-mo parametro unbound la data date.. Un metodo set per ogni tipo di dato JDBC.

Esercizio Creiamo un programma che si connette ad un db e effettua query di INSERT,SELECT e UPDATE Come database utilizzeremo Apache Derby in modalità Embedded. http://db.apache.org/derby Driver: "org.apache.derby.jdbc.embeddeddriver" URL di connessione: "jdbc:derby:[pathaldatabase]" Interprete SQL consigliato per la manipolazione del database: SQuirreL SQL. http://www.squirrelsql.org/