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



Documenti analoghi
JDBC di base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC

Introduzione JDBC interfaccia java.sql driver caricare i driver

JDBC. A. Bechini Accesso a DataD con Java

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

Esercitazione su JDBC

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

Corso di Informatica Modulo T3 B2 - Database in rete

Lezione 9. Applicazioni tradizionali

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

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

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

Scheda 15 Accedere ai DataBase con JDBC

Basi di Dati Esercitazione JDBC. Giugno 2007

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

DBMS ed Applicazioni Motivazioni

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

Java: la libreria delle classi

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

Architettura MVC-2: i JavaBeans

JDBC JDBC. Driver di accesso. Autore: Roberto Fabbrica Diapo 1. Diapo 2. Diapo 3

Laboratorio di reti II: Gestione di database lato server

Programmazione Java Avanzata Spring - JDBC

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

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

Database e reti. Piero Gallo Pasquale Sirsi

PROVA FINALE Ingegneria del software

Accesso a Database con JDBC

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

Tecnologie di Sviluppo per il Web

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

JDBC: Java e database.

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

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

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Tecnologie di Sviluppo per il Web

19. LA PROGRAMMAZIONE LATO SERVER

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

Application Server per sviluppare applicazioni Java Enterprise

GERARCHIE RICORSIVE - SQL SERVER 2008

Uso dei data bases con PHP. Prof. Francesco Accaino Iis Altiero Spinelli Sesto Sa Giovanni

Introduzione ai Sistemi di Gestione di Basi di Dati XML

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

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

DBMS (Data Base Management System)

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

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

Progetto ittorario Anno scol

JDBC. Dispense per il corso di Ingegneria del Web

Esercitazione 4 JDBC

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

Accesso Web a Data Base

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 (Basi di Dati)

Guida all Installazione del ProxyFatturaPA

Manuale per la configurazione di AziendaSoft in rete

Basi di dati (3) Ing. Integrazione di Impresa A.A. 2007/08

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

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

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Sviluppo di applicazioni per basi di dati

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

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

Dispensa di database Access

FileMaker 12. Guida ODBC e JDBC

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

SPSS Inc. Data Access Pack - Istruzioni di installazione per Windows

Corso sul linguaggio SQL

Installazione e caratteristiche generali 1

Organizzazione degli archivi

Basi di Dati: Corso di laboratorio

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

APPENDICE B Le Active Server Page

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

Esercitazione sulle libpq - libreria C per PostgreSQL

2104 volume III Programmazione

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

SurfCop. Informazioni sul prodotto

Informatica per le discipline umanistiche 2 lezione 10

Università degli studi Roma Tre Dipartimento di informatica ed automazione. Tesi di laurea

InitZero s.r.l. Via P. Calamandrei, Arezzo

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

Mac Application Manager 1.3 (SOLO PER TIGER)

JAVA JDBC. Andrea BEI

Registratori di Cassa

Approfondimenti. Contenuti

MagiCum S.r.l. Progetto Inno-School

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

ADO.Net. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Introduzione all elaborazione di database nel Web

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Programmazione Java Avanzata

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

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

Caratteristiche principali. Contesti di utilizzo

Manuale utente Volta Control

Transcript:

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 il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di DBMS a cui si intende accedere ottenuto grazie al paradigma obiect-oriented (separazione dell interfaccia dall implementazione tramite il concetto di driver di accesso al database) JDBC, a differenza di ODBC (Open DataBase Connectivity), può essere usato solo con il linguaggio Java JDBC parte 1 - DEIS Università di Bologna 2 Principali classi/interfacce di JDBC DriverManager: fornisce l interfaccia tra Java ed il driver vero e proprio del database uno dei compiti è quello della creazione della connessione al db Connection: è la classe che si occupa di mantenere la connessione verso il database Statement: è la classe che si occupa di eseguire i comandi SQL ResultSet: è la classe che contiene il risultato di una query eseguita sul database Schema dei legami tra le classi principali Il DriverManager può creare una o più oggetti Connection per l accesso ad uno stesso db o db distinti (remoti, eterogenei) un oggetto Connection può creare diversi oggetti Statement un oggetto Statement può dar luogo a più oggetti Resultset DriverManager Connection Statement Statement Resultset Resultset Resultset Connection JDBC parte 1 - DEIS Università di Bologna 3 JDBC parte 1 - DEIS Università di Bologna 4

Driver JDBC un driver JDBC è un componente software che implementa le interfacce e classi astratte del package JDBC driver JDBC di database/dbms diversi implementano in modo diverso il package JDBC rispettandone però le specifiche e.g. per accedere ad Oracle si usa un driver diverso da quello necessario per accedere a SQL Server o Informix Il driver generalmente è fornito dallo stesso produttore del database/dbms Vedremo successivamente che, indipendentemente dai produttori, esistono 4 tipologie di driver Architettura dei tipi di driver JDBC Driver JDBC- ODBC Bridge Driver ODBC Proprietary DBMS access protocol network Type 2 Driver Java Application JDBC API Type 3 Driver Client Type 3 Driver Server Prop. DBMS access protocol Database Type 4 Driver network JDBC parte 1 - DEIS Università di Bologna 5 JDBC parte 1 - DEIS Università di Bologna 6 Caricamento del driver il driver viene caricato a tempo di esecuzione, tramite il proprio nome nel modo seguente: Class.forName( <nome del driver> ); è possibile caricare più driver; questa istruzione può produrre un eccezione di classe ClassNotFoundException nel caso in cui il driver (la classe) non sia rintracciabile generalmente questo capita quando la classe non è presente nel classpath dell applicazione. ovviamente Class.forName(..) permette di caricare classi in generale e non solo driver JDBC Exception nel caricamento del driver L eccezione: ClassNotFoundException deve necessariamente essere gestita, pena la non compilazione dell applicazione Il codice sarà quindi, in realtà, come il seguente: try { Class.forName( <nome del driver> ); } catch (ClassNotFoundException cnfe) { // codice di gestione dell eccezione } JDBC parte 1 - DEIS Università di Bologna 7 JDBC parte 1 - DEIS Università di Bologna 8

JDBC-ODBC Bridge (i) è un tipo di driver adatto agli ambienti Microsoft (ma non solo) è un adattatore fra JDBC ed ODBC (Open Database Connectivity) Il nome del driver (della classe) di JDBC-ODBC Bridge è sun.jdbc.odbc.jdbcodbcdriver esso riceve le richieste dall applicazione Java e le inoltra al driver ODBC traducendole opportunamente il driver ODBC inoltra le richieste al database/dbms il driver ODBC restituisce i risultati ottenuti al driver JDBC che li ritrasmette all applicazione Java JDBC-ODBC Bridge (ii) questo driver è principalmente utilizzato per sviluppo e test poiché ha dei limiti: non garantisce la gestione della concorrenza sulla stessa connessione incompleta gestione di tutti i possibili tipi di dato meno efficiente degli altri tipi di driver controllo limitato sulle transazioni Il codice per caricare questo driver è il seguente: Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); JDBC parte 1 - DEIS Università di Bologna 9 JDBC parte 1 - DEIS Università di Bologna 10 ODBC Per impiegare il driver JDBC-ODBC Bridge è necessario utilizzare anche ODBC ODBC, analogamente a JDBC, è uno standard per l accesso a database relazionali che offre un insieme di funzioni/procedure astratte invocabili da diversi linguaggi di programmazione In generale ogni produttore di database file o DBMS offre anche il driver ODBC che implementa le relative funzioni astratte: Ms Access, DBIV, Excel, Text... (database files) Oracle, SQL Server, Informix, DB2,. (DBMS) JDBC parte 1 - DEIS Università di Bologna 11 Tipi di driver ODBC: Single-tier e Multi-tier Single-tier ODBC Driver Data access software Database Application ODBC Driver Manager Esegue sia le funzioni ODBC che gli statement SQL => include il software di accesso al db Esempi: Dbase Files,Ms Access Multi-tier ODBC Driver DBMS Database network Esegue le funzioni ODBC, ma invia gli statement SQL al DBMS => non include il software di accesso Esempi: Oracle, Informix, SQL Server JDBC parte 1 - DEIS Università di Bologna 12

Datasource ODBC Il driver ODBC accede al db attraverso un data source name (DSN) Un data source ODBC è un nome che definisce un riferimento ad un database file o a un database gestito con DBMS In entrambi i casi il DSN richiede che almeno venga specificato: quale driver ODBC di quale db/dbms deve essere usato dove si trova il database (e.g. in locale, o in rete per i DBMS) JDBC parte 1 - DEIS Università di Bologna 13 Tipi di data source names Esistono tre tipi di DSN: DSN Utente: è un DSN utilizzabile dal solo utente che lo ha creato; eseguendo il login come utente diverso il DSN è inutilizzabile; DSN di Sistema: è un DSN accessibile da tutti gli utenti della macchina su cui è stato creato DSN su File: è un DSN le cui informazioni vengono custodite su un file e non nel registry; è la scelta migliore per applicazioni con installazione automatica JDBC parte 1 - DEIS Università di Bologna 14 Configurazione di un DSN ODBC Aggiunta di un nuovo DSN nel seguito, verranno mostrati i passi necessari per la configurazione di un DSN di sistema per l accesso ad un database Ms Access nella stessa macchina del DSN il wizard che permette di configurare il DSN è strettamente dipendente dal driver utilizzato quindi esso cambia a seconda della versione del driver, del tipo e versione di DBMS, nonché del produttore del driver JDBC parte 1 - DEIS Università di Bologna 15 JDBC parte 1 - DEIS Università di Bologna 16

Selezione del driver ODBC Definizione del DSN JDBC parte 1 - DEIS Università di Bologna 17 JDBC parte 1 - DEIS Università di Bologna 18 Connessione (i) Dopo aver caricato il driver l applicazione Java può effettuare la connessione gestita tramite la classe Connection L apertura (i.e. istanziazione) di una connessione richiede la specifica del riferimento URL del database cioè della sua posizione/indirizzo e nome (e.g. DSN) nonché dello username e della password (se necessari) Ogni connessione (oggetto Connection) viene creata dal DriverManager Connessione (ii) il codice necessario per creare una connessione è il seguente: Connection con = DriverManager.getConnection( <db URL>, <user>, <password> ); anche questo metodo può produrre un eccezione che deve essere obbligatoriamente gestita l eccezione da gestire nel solito blocco try-catch è di tipo SQLException JDBC parte 1 - DEIS Università di Bologna 19 JDBC parte 1 - DEIS Università di Bologna 20

Connessione: esempio con JDBC-ODBC Il codice seguente crea una connessione via JDBC-ODBC al DSN di nome SIA Connection con = DriverManager.getConnection( jdbc:odbc:sia ); username e password non stati specificati perché non necessari in questo caso la sintassi dell URL dipende dal driver utilizzato: in questo caso, non essendo possibile specificare una macchina remota, non appare alcun riferimento ad indirizzi IP o a nomi di macchine, come invece accade per i driver JDBC per i DBMS Classe Statement (i) La classe Statement istanzia oggetti in grado di inoltrare istruzioni SQL al database cui l applicazione è collegata In linea di principio è possibile eseguire tutte le istruzioni di SQL: per la definizione dei dati (Data Definition Language) per la manipolazione dei dati (DML), query, aggiornamenti, cancellazioni, inserimenti di tuple per il controllo (DCL) JDBC parte 1 - DEIS Università di Bologna 21 JDBC parte 1 - DEIS Università di Bologna 22 Classe Statement (ii) gli oggetti Statement vengono creati dall oggetto connection come segue: Statement stmt = con.createstatement(); L esecuzione di questo metodo può produrre un eccezione: si tratta di un eccezione di tipo SQLException da gestire con un usuale blocco try-catch Metodi della Classe Statement I due metodi più importanti definiti nella classe Statement sono: ResultSet executequery(string sql): esegue una query SQL restituendo un oggetto ResultSet; int executeupdate(string sql): esegue uno statement SQL di modifica dati (INSERT, UPDATE, DELETE) restituendo il numero di record coinvolti entrambi i metodi possono produrre eccezioni di tipo SQLException da gestire con try-catch causata ad esempio da errori nello statement SQL JDBC parte 1 - DEIS Università di Bologna 23 JDBC parte 1 - DEIS Università di Bologna 24

Esempi d uso di executeupdate stmt.executeupdate( insert into persone(nome, cognome) values ( Giuseppe, Verdi ) ); stmt.executeupdate( update persone set nome= Giuseppe where cognome= Verdi ); stmt.executeupdate( delete from persone where cognome= Verdi ); Classe ResultSet Gli oggetti di questa classe contengono il risultato di query (quindi tuple) accessibile con i metodi: boolean next(): muove il cursore sulla tupla successiva, restituendo true se essa esiste o false altrimenti; la posizione iniziale del cursore è prima del primo record; <tipo> get<tipo>(int colonna): recupera il valore dell attributo di posizione colonna della tupla corrente; <tipo> può essere String, Int, Date, BigDecimal etc. (in generale i tipi di dati previsti nelle specifiche JDBC); <tipo> get<tipo>(string attributo): recupera il valore di un attributo della tupla corrente specificandone il nome l invocazione di questi metodi deve essere inserita all interno del blocco try-catch perché possono produrre eccezioni SQL Exception JDBC parte 1 - DEIS Università di Bologna 25 JDBC parte 1 - DEIS Università di Bologna 26 ResultSet: Esempio Esegue una query e visualizza il suo risultato: import java. sql.*; // importazione package JDBC class Esempio { public static void main( String argv[]) { try { Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); Connection con = DriverManager.getConnection( jdbc:odbc:sia ); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( SELECT * FROM studenti ); while (rs.next()) { for (int i=1; i<=10; i++) System.out.print(rs.getString(i) + ); System.out.println; } // try catch( Exception e ) {e. printstacktrace();} } // main } // classe JDBC parte 1 - DEIS Università di Bologna 27 Metodi close() Le classi precedenti forniscono il metodo close() per rilasciare le risorse impegnate Ad esempio per ogni oggetto Statement creato viene allocata della memoria sia nello spazio di indirizzamento dell applicazione che del database/dbms e.g. Oracle restituisce errore al 50-esimo Statement aperto indipendentemente dall inoltro di query E buona norma limitare il numero di oggetti Statement riusando quelli già esistenti e chiudendoli opportunamente: rs.close(); stmt.close(); con.close(); SQL Exception => usare try-catch JDBC parte 1 - DEIS Università di Bologna 28

Driver JDBC per DBMS: l Esempio di Oracle Tra i vari driver Oracle fornisce un driver JDBC di tipo 2 ed uno di tipo 4 (vedi architettura prec.): JDBC OCI client-side: driver JDBC basato sulla libreria nativa Oracle OCI, necessita dell installazione client di Oracle (Tipo 2); JDBC THIN client-side: driver JDBC che non utilizza librerie native, non necessita dell installazione client di Oracle (Tipo 4); Oracle fornisce anche driver ODBC, pertanto è possibile l accesso mediante il tipo 1 Riferimenti http://java.sun.com/products/jdbc/overview.html documentazione ufficiale su JDBC e tutorial gratuiti http://developers.sun.com/product/jdbc/drivers motore di ricerca di driver jdbc Giuseppe Naccarato, Java database e programmazione client/server, Apogeo, ISBN 88-7303-773-9 contiene anche un introduzione ai database relazionali e SQL altri testi di approfondimento: White et al, JDBC API Tutorial and Reference: Universal Data Access for the Java 2 Platform, 2/e, Addison Wesley, ISBN 0-201-43328-1 George Reese, Database Programming with JDBC and Java, Second Edition, O'Reilly, ISBN 1-56592-616-1 JDBC parte 1 - DEIS Università di Bologna 29 JDBC parte 1 - DEIS Università di Bologna 30