La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

JDBC(TM) Database Access. Introduzione Nato nel 1996 1998 JDBC2 (cursori scorrevoli, supporto tipi SQL avanzati) JDBC3 in fase di rilascio JDBC e ODBC.

Presentazioni simili


Presentazione sul tema: "JDBC(TM) Database Access. Introduzione Nato nel 1996 1998 JDBC2 (cursori scorrevoli, supporto tipi SQL avanzati) JDBC3 in fase di rilascio JDBC e ODBC."— Transcript della presentazione:

1 JDBC(TM) Database Access

2 Introduzione Nato nel JDBC2 (cursori scorrevoli, supporto tipi SQL avanzati) JDBC3 in fase di rilascio JDBC e ODBC si basano sulla stessa idea: comunicare con il gestore dei driver che usa i driver registrati per comunicare con il DB Elenco driver:

3 Schema JDBC Applicazione java Gestore driver JDBC Bridge JDBC/ODBC Driver JDBC driver ODBC DB API JDBC API driver JDBC Se non ho il driver JDBC per quel db uso la seconda strada ma non è performante e non è supportato

4 Tipi di driver 1. JDBC/ODBC bridge, lento 2. Scritti parte in Java e parte in codice nativo comunicano con API client DB. Occorre installare libreria Java e codice specifico per la piattaforma 3. Librerie Java pure che usano un protocollo indipendente dal db che inviano richieste a componente server che traduce nel protocollo specifico del DB 4. Librerie JAVA pure che traducono direttamente nel protocollo specifico del DB 1 e 2 non si usano mai. 3 e 4 sì. Dettagli irrilevanti per noi.

5 Uso tipico di JDBC Two tier (due livelli) funziona ma è critica busisness e viste collegate Tree tier (tre livelli) logica di business e viste scollegati (è meglio) Client (presentazione visiva) JDBC DB Protocollo db Logica di business JDBC DB Protocollo db Client (presentazione visiva) HTTP,RMI,ecc..

6 Installazione di JDBC JDBC è stato progettato per rendere le cose semplici. Questo significa che l'API JDBC rende facile la gestione dei compiti del db, come semplice SELECT. La prima cosa che dovete fare è verificare che ci sono le seguenti impostazioni. Per fare questo dovete sequire le seguenti fasi: 1. Installare Java e JDBC sulla vostra macchina. 2. Installare un driver sulla vostra macchina 3. Installare un DBMS se necessario

7 Url di database Sintassi (per collegarsi al db) simile a URL internet Sintassi generica jdbc:nom sottoprotocollo: altro Es. jdbc:db2:MIODATABASE jdbc:pointbase:MIODATABASE jdbc:odbc:rubrica Per MySQL si usa: jdbc:mysql://localhost:3306/nomeDB Per Oracle si usa:

8 Creare la connessione Nomi delle classi driver JDBC com.ibm.db2.jdbc.app.DB2Driver (file tipo classs) com.mysql.jdbc.Driver (MySQL) oracle.jdbc.driver.OracleDriver (Oracle) Referenziare la libreria contenente il driver (.zip o.jar) classpath o IDE Registrare il driver caricandone la classe Class.forName (oracle.jdbc.driver.OracleDriver); Registrare il driver nel driver manager Impostare le proprietà di sistema via codice ad esempio leggendole da un file di proprietà

9 Aprire la connessione Si apre la connessione con la classe Connection Connection conn= DriverManager.getConnection(url,username,password); (restituisce un oggetto connection) Es. Connection conn = ost:1521:xe, ad,pass);

10 Esempi Esempio di JDBC-ODBC bridge (compilato) Esempio di JDBC-ODBC bridgecompilato Esempio di driver JDBC per PointBase (compilato) Esempio di driver JDBC per PointBasecompilato

11 Eseguire comandi SQL Creare un oggetto Statement Statement stat= conn.createStatement(); Creare la stringa SQL String command= UPDATE libri SET prezzo=prezzo-5.00 WHERE titolo NOT LIKE %HTML% Chiamare il metodo executeUpdate restituisce un intero, le righe influenzate dal comando) stat.executeUpdate(command); Per estrarre dati si esegue ExecuteQuery che restituisce un oggetto di tipo ResultSet ResultSet rs = stat.executeQuery(SELECT * FROM libri); Il metodo generico execute restituisce un valore boolean che si può testare per sapere se lSQL restituisce un ResultSet

12 Eseguire comandi SQL (cont.) Occorre poi ciclare sul result set while(rs.next()) { rs.getString(1); //accesso tramite indice colonna, inizia //da 1 non da zero rs.getDouble(prezzo); } Nota: tipi di dati Java non proprio uguali a quelli SQL (pag298 man Java2)

13 METADATI Servono pe ottenere informazioni sul databse o sulla tabella Info sul database DatabaseMetaData meta= conn.getMetaData(); ResultSet rs = meta.getTables(null, null, null,new String[] {TABLE }); Restituisce un set di risultati con info su tutte le tabelle Info su una tabella ResultSetMetaData metatab= rs.getMetaData(); for(int i=0;i

14 JDBC2 Result set scorrevoli In JDBC1 esisteva solo il metodo next(), JDBC2 prevede anche il metodo previous() e la possibilità di avere un resultset modificabile(JDBC1 no) Statement stat = conn.createStatement(type, concurrency); Es. Statement stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSI TIVE,ResultSet.CONCUR_READ_ONLY); permette di avere rs scorrevole e non sensibile a modifiche apportate al db e in sola lettura Altri metodi sono: absolute(n), relative(n),first(),last(),beforeFirst(), afterLast(),isFirst,etc.

15 JDBC2(cont) Result set aggiornabile Statement stat= conn.createStatement(ResultSet.TYPE_SCROLL_INSENSI TIVE,ResultSet.CONCUR_UPDATABLE); Per aggiornare ResultSet rs= stat.executeQuery(select * from libri); while(rs.next()) { double prezzo=rs.getDouble(prezzo); rs.updateDouble(prezzo,prezzo*1.2); rs.updateRow(); } updateRow rende le modifiche permanenti sul db anche deleteRow() e insertRow()

16 Transazioni Le transazioni servono per garantire integrità del DB(tutte op a buon fine o annullate) Per default connessione in modo autocommit (inviati subito) Per transazione conn.setAutoCommit(false); Statement stat= conn.createStatement(); stat.executeUpdate(cmd1); stat.executeUpdate(cmd2); conn.commit() o se errore conn.rollback()


Scaricare ppt "JDBC(TM) Database Access. Introduzione Nato nel 1996 1998 JDBC2 (cursori scorrevoli, supporto tipi SQL avanzati) JDBC3 in fase di rilascio JDBC e ODBC."

Presentazioni simili


Annunci Google