La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

JDBC(TM) Database Access

Presentazioni simili


Presentazione sul tema: "JDBC(TM) Database Access"— Transcript della presentazione:

1 JDBC(TM) Database Access

2 Introduzione Nato nel 1996 1998 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 API JDBC Gestore driver JDBC
API driver JDBC Bridge JDBC/ODBC Driver JDBC Se non ho il driver JDBC per quel db uso la seconda strada ma non è performante e non è supportato driver ODBC DB DB

4 Tipi di driver JDBC/ODBC bridge , lento
Scritti parte in Java e parte in codice nativo comunicano con API client DB. Occorre installare libreria Java e codice specifico per la piattaforma Librerie Java pure che usano un protocollo indipendente dal db che inviano richieste a componente server che traduce nel protocollo specifico del DB 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 Protocollo db DB Client (presentazione visiva) HTTP,RMI,ecc.. DB Logica di business JDBC Protocollo db

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: Installare Java e JDBC sulla vostra macchina. Installare un driver sulla vostra macchina 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 driver JDBC per PointBase (compilato)

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 l’SQL 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<metatab.getColumnCount();i++) {String nomeCol = metatab.getColumnLabel(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"

Presentazioni simili


Annunci Google