JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede...

24
1 1 JDBC JDBC Un’API JAVA per accedere a Basi di Dati Relazionali 2 Introduzione a JDBC Perché JDBC RDBMS, Architetture client-server, ODBC Inside JDBC Driver, classi, interfacce Un esempio Contenuti 3 Cos’è JDBC ? E’ un insieme di classi ed interfacce che forniscono un’API standard per operare con Basi di Dati Relazionali in pure JAVA . JDBC è un trademark SUN Acronimo di Java Database Connectivity? Definito nel 1996 (JDBC 1.0), Molto migliorato nel 1998 per Java 2 (JDBC 2.0), Ottimizzato nel 2003 (JDBC 3.0). E’ una base per altri package di più alto livello

Transcript of JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede...

Page 1: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

1

1

JDBCJDBCUn’API JAVA per accedere a Basi di Dati Relazionali

2

Introduzione a JDBC

Perché JDBC

RDBMS, Architetture client-server, ODBC

Inside JDBC

Driver, classi, interfacce

Un esempio

Contenuti

3

Cos’è JDBC ?

E’ un insieme di classi ed interfacce cheforniscono un’API standard per operare con Basi di Dati Relazionali in pure JAVA .JDBC è un trademark SUN

Acronimo di Java Database Connectivity?

Definito nel 1996 (JDBC 1.0), Molto migliorato nel 1998 per Java 2 (JDBC 2.0), Ottimizzato nel 2003 (JDBC 3.0).

E’ una base per altri package di più alto livello

Page 2: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

2

4

Architetture per la persistenza di informazioni

5

Accesso Diretto

Applicazione Librerie

Proprietarie

Base di Dati

VantaggiEfficiente per soluzionipiccolissime????

SvantaggiSviluppo molto lentoNon flessibile/scalabileNon condivisibileDistoglie dalla ‘business logic’

6

Utilizzo di DBMSUn DataBase Management System èun’applicazione general-purpose, la cui unicafunzione è manipolare basi di datiFornisce un modo per memorizzareinformazioni in strutture dati efficienti, scalabili e flessibili, Permette ricerche da più ‘direzioni’

Page 3: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

3

7

Utilizzo di DBMS (2)Permette la definizione di architetture client-server (o 2-tiered)

Il client conosce come gestire i datiIl DBMS gestisce lo storage ed il retrieval dei dati

Lo sviluppatore scrive solo la “business logic”

Esempi: Access, Oracle, SQL Server, Informix, ecc…

8

Architettura 2-Tier

Librerie

accesso

dati

Client DBMS

Base di Dati

VantaggiMolto più efficienteSviluppo rapidoScalabile/flessibile

SvantaggiSicurezza# licenze per DBMSGUI legata a business logicNon utilizzabile sul Web

9

Architettura 3-Tier

GUILibrerie

accesso

dati

DBMS

Base di Dati

Middleware

HTTP, RMI,

CORBA

VantaggiPolicy sicurezzaGUI indipendente daidatiOrientata al Web

SvantaggiMaggiore complessità

Page 4: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

4

10

Come interagire con SQLUsare SQL interattivamente…

Non è adatto ai nostri scopi!

11

Come interagire con SQL (2)Inserire SQL nel codice…

Come gestire la connessione con il DBMS?

12

Come interagire col DBMSEmbedded SQL

Il programma colloquia direttamente col DBMSGli statement SQL sono compilati utilizzando un precompilatore specifico del DBMS. SQL diviene parte integrante del codice.

Call Level InterfaceIl programma accede al DBMS per mezzo di un’interfaccia standardGli statement SQL non sono compilati, ma inviati al DBMS a run-time.Il DBMS può essere sostituitoLa stessa interfaccia può interagire con più DBMS

Page 5: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

5

13

Esempi di CLIODBC

Object Database Connectivity

OLE-DBObject Linking and Embedding for Databases

ADOActive Data Objects

ADO.NETActive Data Objects per il framework .NET

JDBC

14

ODBCAPI standard definita da Microsoft nel 1992La prima implementazione di un CLI Permette l’accesso a dati residenti in DBMS diversi(Access, MySQL, DB2, Oracle, …)

Supportato da praticamente tutti i DBMS in commercioGestisce richieste SQL convertendole in un formatocomprensibile al particolare DBMS

Permette agli sviluppatori di formulare richieste SQL a DB distinti senza dover conoscere le interfacce di programmazioneproprietarie di ogni singolo DB

15

Architettura ODBC

Esempio di sorgente dati in Windows

Page 6: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

6

16

ODBC (svantaggi)Utilizza interfacce CE’ procedurale (NO O-O)Ha poche funzioni con molti parametriE’ abbastanza ostico

17

JDBC

18

Cosa fa JDBC

JDBC permette ad oggetti JAVA di dialogare con database relazionali.

Effettua tre operazioni fondamentali1. Stabilisce una connessione con il

DBMS+database2. Invia istruzioni SQL al DBMS3. Processa i risultati

Page 7: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

7

19

Punti chiave di JDBC

Non necessita di Driver preinstallati (a differenza di ODBC)Fornisce delle funzionalità specifiche per le appletUtilizza la sintassi degli URL per la localizzazione di risorseUna classe speciale (il DriverManager) è responsabile di attivare il driver giusto per la connessione ad un RDBMSMappa i tipi SQL in tipi JAVA

20

Architettura di JDBC

21

JDBC Driver

Page 8: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

8

22

Driver Tipo IWrapper da JDBC ad ODBCTraduce le JDBC calls in ODBC calls

VantaggiE’ incluso nel JDK (gratis)Funziona con qualsiasi DBMS ODBCFacile da configurare

SvantaggiMolto lentoUtilizzabile solo per sviluppocodice

ODBCDriver

Client

DBMS

ODBCDriver DBMS

ODBCJBCD-

ODBC

Bridge

JDBC

API

23

Driver Tipo IIWrapper da JDBC a driver nativo DBMSTraduce le JDBC calls in chiamate JNI al codiceC/C++ del DBMS DriverVantaggi

E’ di facile realizzazioneSvantaggi

Un bug nel driver puòportare a crash del sistemaDifficile da configurareN.a. al Web

Client

DBMS Libraryin codice nativo

DBMSWrapperJDBC

API

24

Driver Tipo IIIDriver Pure Java per DB MiddleWareTraduce le JDBC calls in un net-protocol indipendente dalDBMS, convertito poi nel DBMS-protocol dal server

VantaggiPure Java1 driver client per N DBMS lato server

SvantaggiDifficile da configurareI DBMS vendors non realizzano questo tipo di driver

ClientDriver

Pure

Java

JDBC

API

DBMS

DBMSDB

Middle

Ware

Page 9: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

9

25

Driver Tipo IVDriver Pure Java per DBMSTraduce le JDBC calls in un net-protocol comprensibiledal DBMSVantaggi

Massima velocitàFacili da configurarePure Java

SvantaggiNon supportato da tutti i DBMSRichiede 1 Driver per ogniDBMS, lato client

ClientDriver

Pure JavaJDBC

APIDBMS

26

JDBC API

27

Struttura di JDBCJDBC è costituito da 2 ‘layer’ principali:

JDBC driver (verso il DBMS)JDBC API (verso l’applicativo)

Driver Manager

Driver

Connection

StatementPrepared

Statement

Callable

Statement

ResultSet

Driver Layer

Application Layer

ResultSet ResultSet

Page 10: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

10

28

ResultSet

next()getString()

<<Interface>>Statem ent

executeQuery()executeUpdate()executeBatch()execute()

<<Interface>>

CallableStatem ent(from sql)

<<Interface>>

PreparedStatem ent

setLong()

<<Interface>>

Connection

cre ateStatem e nt()getMetaData()prepareStatem ent()prepareCall()

<<Interface>>

JdbcOdbcBridge OracleDriver

DriverManager

getConnection()regis terDriver()

Driver

connect()

<<Interface>>

Class Diagram in UML

29

PuntualizzazioneTutte le classi fondamentali di JDBC sonointerfacce

Non sono implementate in JDBCSono implementate dallo specifico driver

Esempio di Interface-Implementation pattern nell’O-O design.

DriverManager

Client

Code

DBMS

1

Drivers

DBMS

2

30

JDBC API

Data TypesAPI di base

1. Caricare un driver 2. Ottenere una connessione3. Eseguire uno Statement4. Gestire i risultati5. Rilasciare le risorse

API avanzatePrepared e Callable StatementsEccezioni e WarningTransazioni e Isolamento

Page 11: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

11

31

Data TypesJDBC definisce un insieme di tipi SQL nella classejava.sql.Types JDBC Types Mapped to Java Types

JDBC Type Java TypeCHAR StringVARCHAR StringLONGVARCHAR StringNUMERIC java.math.BigDecimalDECIMAL java.math.BigDecimalBIT booleanTINYINT byteSMALLINT shortINTEGER intBIGINT longREAL floatFLOAT doubleDOUBLE doubleBINARY byte[]VARBINARY byte[]LONGVARBINARY byte[]DATE java.sql.DateTIME java.sql.TimeTIMESTAMP java.sql.Timestamp

32

API di base

Cinque passi fondamentali in ogni applicazioneJDBC:

1.Caricare un driver (DriverManager)2.Ottenere una connessione (Connection)3.Eseguire uno Statement (Statement)4.Gestire i risultati (ResultSet)5.Rilasciare le risorse

33

Step 1 – Caricare il Driverimport java.sql.*;..try{

Class.forName(NOME_DRIVER);}catch(ClassNotFoundException){// Driver non trovato !}

Si perde il riferimento al nuovo oggetto?

Page 12: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

12

34

Il Driver Manager

Il DriverManager mantiene una lista di classi Driver che registrano se stessi invocando il metodo registerDriver().

35

Caricare il DriverL’inizializzatore statico del driver, chiamato dalla JVM al caricamento della classe, si registra nel Driver Manager

public class MyDriver{

static{

new MyDriver();}public MyDriver() {

java.sql.DriverManager.register(this); }

}

36

Step 2 - Ottenere una Connessione

L’oggetto Connection rappresenta un canale di comunicazione con un DB. Una sessione di connessione include istruzioni SQL che vengono eseguite e processate ritornando i valori attraverso la connessione.

Page 13: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

13

37

Ottenere una Connessione

Connection con =DriverManager.getConnection(

URL_MY_DATABASE);

E’ richiesta una connessione al Driver Manager, senza specificare quale particolareDriver debba istanziarla

E’ l’unico modo per ottenere una completaindipendenza dal DBMS!

38

Gli URL in JDBCE’ una stringa formata da nodi, separati da ‘:’ o ‘/’Formato:

protocollo:sottoprotocollo:databasename

Il parametro “Databasename” non ha una particolare sintassi, ma è interpretato dal driverEsempi

jdbc:odbc:myDBjdbc:oracle:@mywebsite:1521:myDBjdbc:cloudscape:myDBjdbc:cloudscape:rmi:myDB;create=true

39

Quale Driver crea la connessione?

L’URL specifica un sottoprotocollo ed il data source-database system

Es. jdbc:odbc:MyDataSourceIl Driver Manager trova il driver appropriatochiamando il metodo acceptURL(URL) di ognidriver caricato: Il primo driver che risponde true, stabilisce unaconnessione.E’ possibile in questo modo scegliere il driver JDBC appropriato a run-time!

Page 14: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

14

40

L’interfaccia Driver

Driver

connect(url : String, info : java.util.Properties) : ConnectionacceptsURL(url : String) : booleangetPropertyInfo(url : String, info : java.util.Properties) : DriverPropertyInfo[]getMajorVersion() : intgetMinorVersion() : intjdbcCompliant() : boolean

<<Interface>>

41

La classe DriverManager

DriverManager

getConnection(url : String, info : java.util.Properties) : ConnectiongetConnection(url : String, user : String, password : String) : ConnectiongetConnection(url : String) : ConnectiongetDriver(url : String) : DriverregisterDriver(driver : java.sql.Driver) : voidgetDrivers() : java.util.Enumeration

42

Connection

createStatement() : StatementgetMetaData() : DatabaseMetaDataprepareStatement(sql : String) : PreparedStatementprepareCall(sql : String) : CallableStatement

<<Interface>>

L’interfaccia Connection

Page 15: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

15

43

Step 3 - Eseguire uno Statement

Lo Statement è l’oggetto che ‘trasporta’le istruzioni SQL sulla connection, verso il DB.E’ unico per tutta la durata dellaconnessione.

Per fare una nuova query, semplicementesi cambia la stringa SQL al suo interno

44

Eseguire uno Statementtry{

Statement st = con.createStatement();ResultSet rs = st.executeQuery(“SELECT nomeFROM studenti”);

}catch(SQLException sqe){

// Problema}

Lo scopo principale della classe Statement è eseguireistruzioni SQL.

45

Eseguire uno Statement

Si utilizza executeQuery() per glistatement che restituiscono tuple

Comandi DQLRestiuisce un ResultSet

Si utilizza executeUpdate() per glistatement che non restiuiscono tuple

Comandi DDL/DMLRestituisce il numero di righe modificate

JDBC 2.0 ha introdotto executeBatch()per eseguire più statement in sequenza (per motivi di efficienza)

Page 16: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

16

46

Eseguire uno Statement (2)

Se non si conosce il tipo di query (es. L’utente la inserisce a run-time), si usa la execute()

Restituisce true se è disponibile un ResultSetSi deve chiamare la getResult() per recuperare le informazioni

Ad ogni Statement è associato un unicoResultSet

47

Statem ent

executeQuery(s ql : String) : Res ultSetexecuteUpdate(s ql : String) : intexecuteBatch()execute(s ql : String) : booleangetWarnings () : SQLWarninggetRes ultSet() : Res ultSetgetUpdateCount() : intgetMoreRes ults () : boolean

<<Inte rface>>

L’interfaccia Statement

48

Prepared Statement

E’ un SQL Statement precompilato (il DBMS la salvanella propria cache)Utilizzabile con query molto simili nella struttura, ma che cambiano spesso parametriMigliora le prestazioni se la query è eseguita moltevolte

PreparedStatement updateEsami = con.prepareStatement("UPDATE Studenti SET esami = ? WHERE Matricola LIKE ? ");

updateEsami.setInt(1, 13); updateEsami.setString(2, ”011/245389"); updateEsami.executeUpdate();

Page 17: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

17

49

Callable Statement

E’ la classe JDBC per supportare le stored procedures

Utilizzate per incapsulare un insieme di operazioni o query da eseguire suldatabase server

L’utilizzo è richiesto solo per le stored procedure che restituiscono dei valori.

50

Step 4 – Gestire i risultati

In genere l’esecuzione di una query porta alla restituzione di dati da parte del DBMSUn ResultSet contiene tutte le tuple che soddisfano la condizione nell’istruzione SQL inviata usando lo StatementI dati sono gestiti in un’apposita struttura dati Fornisce dei metodi per accedere ai dati che contiene.

51

Gestire i risultati

while(rs.next()){

System.out.println(“Nome: “ + rs.getString(“nome”));

System.out.println(“Esami: “ + rs.getInt(“esami”));

}

I risultati di una query sono salvati in un oggetto RecordSet

Page 18: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

18

52

ResultSetHa un ‘cursore’ che punta al record correnteIl cursore del ResulSet è posizionatoprima della riga iniziale, dopol’esecuzione di un metodo executeXXX()Dispone di molti metodi di navigazione(metodi per modificare la posizione del cursore)

53

ResultSet (2)Permette di recuperare i valori tramite i metodi getXXXX(colonna)La colonna può essere specificata o con il nome o con il numero:

Il nome delle colonne è case-insensitiveLa numerazione delle colonne parte da 1

rs.getString(“nome”);

rs.getString(1);

54

Navigazione nel ResultSet

Operazioni disponibili sul ResultSetfirst(), last(), next()previous(), beforeFirst(), afterLast()absolute(int), relative(int)

JDBC 1.0 permetteva una navigazione solo in avanti

Page 19: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

19

55

Dati nel ResultSet

Il driver JDBC converte il tipo di dato del DB in quello richiesto con il metodo getXXX().

Ad esempio se il tipo di dato nel DB è di tipo VARCHAR e la richiesta è di tipo String, JDBC effettua la conversione.

Per determinare se un valore restituito è di tipo JDBC NULL, bisogna prima leggere la colonna e poi usare il metodo ResultSet.wasNull per scoprire se il voloreritornato è NULL.

Il metodo restituisce un valore che indica “null” a seconda del tipo di dato analizzato. Abbiamo :

Il valore null di Java per getString, getDate, getTime ed altri;Il valore 0 (zero) per getByte, getInt ed altri numerici;Il valore false per il tipo booleano.

56

Modifiche al ResultSet

Si possono aggiungere o modificare le righe di un ResultSet:rs.update( 3, “new value”);rs.updateRow();

Si possono eliminare delle righe

57

Step 5 – Rilasciare le risorse

rs.close();st.close();con.close();

Page 20: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

20

58

Esempio completoimport java.sql.*;…try

Class.forName(NOME_DRIVER);catch(ClassNotFoundException){/* Driver non trovato ! */}

try{Connection con = DriverManager.getConnection(URL_MY_DATABASE);Statement st = con.createStatement();ResultSet rs = st.executeQuery(“SELECT nome FROM studenti”);}while(rs.next())

System.out.println(“Nome: “ + rs.getString(“nome”));

catch(SQLException sqe){/* Problema */}

rs.close();st.close();con.close();…

59

Applicazione

DBMS

DriverManager

Driver

Connection

Statement

ResultSet

SQLException

60

JDBC API Avanzate

Page 21: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

21

61

Programmi Dinamici

Non tutti i programmi sono a conoscenzadella struttura del DB su cui operano.I ‘table viewer’, ad esempio, scoprono a run-time lo schema del database.Sono necessarie delle classi per accedere allastruttura del DB:

La classe DatabaseMetaData, istanziata daConnection, restituisce informazioni generiche suldatabase.La classe ResultSetMetaData, istanziata daResultSet, restituisce le informazioni sulla strutturadello specifico ResultSet

62

DatabaseMetaData

L’interfaccia DatabaseMetaData è utilizzata per reperire informazioni sulle sorgenti di dati.L’interfaccia mette a disposizione circa 150 metodi classificati nelle seguenti categorie :

informazioni generali circa la sorgente dati (Es. Nome del DBMS, ver. del Driver…);aspetti e capacità supportate dalla sorgente dati;limiti della sorgente dati;cosa gli oggetti SQL contengono e gli attributi di questi oggetti (Es. Tutte le tabelle del DB);transazioni offerte dalla sorgente dati.

DatabaseMetaData md = con.getMetaData();

63

ResultSetMetaData

Tra le informazioni troviamo:Numero di colonne (getColumnCount())Nome di una colonna (getColumnLabel())Tipo di una colonna (getColumnTypeName())

ResultSetMetaData md = rs.getMetaData();

Page 22: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

22

64

Eccezioni e Warning

65

Problemi con i DB

Sebbene Java sia fortemente tipato, non èpossibile effettuare, durante la compilazione, controlli sul corretto utilizzo dei valoriprovenienti da un DBQuasi tutte le istruzioni viste in precedenzapossono portare a potenziali problemi (Es. Perdita connessione al db).

Alcuni problemi sono ‘recuperabili’, altri no.

66

Eccezioni e Warning

In JDBC, oltre alle classiche eccezioni Java, esistono anche i warning

Un eccezione causa una brutale terminazione del metodo in corso da parte della JVMUn warning viene concatenato all’oggetto che lo ha generato, permettendo la prosecuzione del metodo corrente

E’ a discrezione dell’implementatore del driver stabilire quale problema generiun’eccezione e quale un warning

Page 23: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

23

67

SQL Exception

E’ una sottoclasse di Java.lang.ExceptionAggiunge informazioni sul tipo di erroreproveniente dal databasePiù eccezioni possono essere concatenate

68

SQLException

SQLException

vendorCode : int

SQLException(reas on : String, SQLState : String, vendorCode : int)SQLException(reas on : String, SQLState : String)SQLException(reas on : String)SQLException()getSQLState() : StringgetErrorCode() : intgetNextException() : SQLExceptions etNextException(ex : SQLException) : void

69

SQL Warning

E’ una sottoclasse di SQLExceptionNon richiede il catchUtilizzato quando il problema non è tantograve da richiedere un’eccezioneEsaminabile con il metodo getWarnings() di Connection, Statement, ResultSet.

Page 24: JDBC - WordPress.com · 2007-11-06 · Pure Java Svantaggi Non supportato da tutti i DBMS Richiede 1 Driver per ogni DBMS, lato client Client Driver Pure Java JDBC API DBMS 26 JDBC

24

70

SQL Warning

SQLWarning

SQLWarning(reason : String, SQLstate : String, vendorCode : int)SQLWarning(reason : String, SQLstate : String)SQLWarning(reason : String)SQLWarning()getNextWarning() : SQLWarningsetNextWarning(w : SQLWarning) : void

71

OO-RDBMS Binding

In JDBC lo sviluppatore ha la responsabilità di mappare gli oggetti Java in tabelle del DB e viceversa.

I bindings permettono allo sviluppatore di rendere trasparente la persistenza di oggetti Java.

Hibernate…