Java DataBase Connectivity (JDBC)

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Accesso ai dati su Relational Database Management Systems LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento.
Accesso ai dati su file LSA: Laboratorio di Sistemi Informativi Economico Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università di Pisa.
CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( Password:… Dora in poi, in questi lucidi,
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.
DBMS (DataBase Management System)
Database MySql.
Sicurezza e concorrenza nelle basi di dati
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Utilizzare PHP 5 Corso Interazione Uomo – Macchina AA 2005/2006.
SQL da programma.
Programmazione Ingegneria TLC
Database nel Web Modulo Didattico: Francesca Platania
Limplementazione del database Oracle in Aleph500 Udine, marzo 2001.
OO.1 Marco Ronchetti - Java Sql package.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Un prototipo di strumento per la manipolazione di versioni di schema in ambito eterogeneo Fabio Grandi DEIS - Università di Bologna SVMgr Schema Versioning.
Maurizio Lenzerini Domenico Lembo Laurea in Ingegneria Informatica - Università di Roma "La Sapienza" Corso di Basi di Dati - A.A. 2003/2004 Prima Esercitazione.
SQL Per la modifica di basi di dati
CAPITOLO 1 JAVA: UN TUFFO NEL LINGUAGGIO E NELL'AMBIENTE.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
JDBC(TM) Database Access
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Basi di dati Claudia Raibulet
LSA - Laboratorio di Sistemi Informativi Economico-Aziendali
UNIVERSITÀ POLITECNICA DELLE MARCHE
B.I. Strategy ETL A SUPPORTO DELLA BUSINESS INTELLIGENCE
Sistemi Informativi sul Web
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
BIOINFO3 - Lezione 341 INTERAZIONE CON UN SERVER MYSQL Quando abbiamo parlato dei database relazionali SQL vi avevo già accennato che linterazione (invio.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
OBIETTIVI: Introduzione ai driver ODBC Creazione di alcune tabelle del database Creazione query Creazione report Lezione del 13/11/2009 Bray Francesco.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( D’ora in poi, in questi lucidi, il vostro utente oracle.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
IV D Mercurio DB Lezione 1
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Accesso a basi di dati con ASP.
SQL*PLUS Worksheet Permette di:
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
Pagine ASP parte 3 I data base Stefano Schacherl.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Education & Training Training per Microsoft Access 97 Perché Education & Training ? Perché StartPoints crede nell’importanza strategica delle Risorse Umane.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Introduzione a SQL Server 2000 LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Corso Java : Lezione 5 JDBC API : panoramica JDBC API : uso nel codice.
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT P ERSISTENZA.
Transcript della presentazione:

Java DataBase Connectivity (JDBC) LSA Laboratorio di Sistemi Informativi Economico Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università di Pisa

Accesso ai dati su RDBMS Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su RDBMS Protocolli e API ODBC, OLE DB, ADO Programmazione JDBC Classi java.sql Introduzione a SQL Server 2000 Enterprise manager Query analyser Accesso ai dati esterni Linked servers OPENROWSET OPENXML

Lab. Sistemi Informativi Economico-Aziendali JDBC JDBC è una libreria di API per l’accesso uniforme a database relazionali Definisce classi per: connessione a database invio di query SQL navigazione dei risultati delle query accesso ai metadati del database/risultati Versioni JDBC 1.0 -- JDK 1.1 JDBC 2.0 -- JDK 1.3 Packages Java java.sql javax.sql JDBC 3.0 -- JDK 1.4 JDBC 4.0 -- JDK 1.5 (?estate 2004?)

Lab. Sistemi Informativi Economico-Aziendali JDBC Architettura di connessione Driver di tipo 1 traducono JDBC in ODBC JDBC-ODBC Bridge inefficienti Driver di tipo 2 parte in Java e parte in codice nativo Driver di tipo 3 pure Java protocollo indipendente dal RDBMS Driver di tipo 4 protocollo specifico del RDBMS

Lab. Sistemi Informativi Economico-Aziendali Risorse on-line Sito JDBC http://java.sun.com/products/jdbc API Java <directory java>/docs/guide/jdbc Tutorial on-line http://java.sun.com/docs/books/tutorial/jdbc

Lab. Sistemi Informativi Economico-Aziendali JDBC: Accesso ai dati Registrare il driver JDBC Connettersi al DB Definire una query SQL Processare i risultati della query Chiudere la connessione

JDBC: (1) Registrare il driver Lab. Sistemi Informativi Economico-Aziendali JDBC: (1) Registrare il driver import java.sql.*; // package JDBC public int count(String[] args) throws ClassNotFoundException { // registra il driver MS Sql Server Class.forName(" com.microsoft.jdbc.sqlserver.SQLServerDriver "); … // modalità alternativa (elenco di driver separati da ‘:’) System.setProperty("jdbc.drivers", "com.microsoft.jdbc.sqlserver.SQLServerDriver: oracle.jdbc.OracleDriver");

JDBC: (1) Registrare il driver Lab. Sistemi Informativi Economico-Aziendali JDBC: (1) Registrare il driver Significa caricare dinamicamente una classe Java sun.jdbc.odbc.JdbcOdbcDriver è il JDBC-ODBC Bridge fornito con JDK Altri driver: IBM DB2 com.ibm.db2.jcc.DB2Driver SQL Server com.microsoft.jdbc.sqlserver.SQLServerDriver Oracle oracle.jdbc.OracleDriver MySQL com.mysql.jdbc.Driver Elenco driver http://servlet.java.sun.com/products/jdbc/drivers

JDBC: (1) Registrare il driver Lab. Sistemi Informativi Economico-Aziendali JDBC: (1) Registrare il driver Per caricare la classe occorre: avviare il programma con –classpath <file_jar_del_driver> o, modificare CLASSPATH con <file_jar_del_driver> o, copiare <file_jar_del_driver> in jre/lib/ext File Jar di SQL Server: mssbase.jar mssqlserver.jar msutil.jar File Jar di DB2: db2jcc.jar db2jcc_license_cu.jar

JDBC: (2) Connessione al DB Lab. Sistemi Informativi Economico-Aziendali JDBC: (2) Connessione al DB String url = “jdbc:microsoft:sqlserver:” + // driver “//tera.di.unipi.it/” + // host “;DatabaseName=name”; // database String user = “foo”; String password = “hello”; Connection conn = DriverManager.getConnection(url, user, password); …

JDBC: (2) Connessione al DB Lab. Sistemi Informativi Economico-Aziendali JDBC: (2) Connessione al DB L’URL di connessione è specifica del driver definita nella documentazione del driver IBM DB2 String url = “jdbc:db2:” + “//tera.di.unipi.it:50000/” + “sample” MS Access (via ODBC) String url = “jdbc:odbc:;” + “DRIVER=Microsoft Access Driver (*.mdb);” + “DBQ=db1.mdb” Sorgente ODBC registrata String url = “jdbc:odbc:<nome_sorgente>”;

JDBC: (3) Definire query SQL Lab. Sistemi Informativi Economico-Aziendali JDBC: (3) Definire query SQL // oggetto per la gestione di comandi SQL Statement stmt = con.createStatement(); String query = "SELECT nome,eta FROM elenco“; // metodo per l’esecuzione di query SQL ResultSet rs = stmt.executeQuery( query ); String update = “UPDATE elenco SET eta = eta + 1“; // metodo per l’esecuzione di update/insert/create table SQL int affectedRows = stmt.executeUpdate(update );

JDBC: (4) Processare i risultati Lab. Sistemi Informativi Economico-Aziendali JDBC: (4) Processare i risultati … // ResultSet è un iteratore sulle righe while ( rs.next() ) { // accesso ai valori dei campi per nome String nome = rs.getString("nome"); int eta = rs.getInt("eta"); // accesso ai valori dei campi per posizione (a partire da 1) int eta2 = rs.getInt( 2 ); System.out.println(nome + " " + eta); }

Mapping tipi di dato JDBC - Java Lab. Sistemi Informativi Economico-Aziendali Mapping tipi di dato JDBC - Java

JDBC: (4) ResultSet scorrevoli Lab. Sistemi Informativi Economico-Aziendali JDBC: (4) ResultSet scorrevoli … Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String query = "SELECT nome,eta FROM elenco“; ResultSet rs = stmt.executeQuery( query ); rs.previous(); // riga precedente rs.relative(-5); // 5 righe indietro rs.relative(7); // 7 righe avanti rs.absolute(100); // 100-esima riga

JDBC: (4) ResultSet aggiornabili Lab. Sistemi Informativi Economico-Aziendali JDBC: (4) ResultSet aggiornabili … Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); String query = "SELECT nome,eta FROM elenco“; ResultSet rs = stmt.executeQuery( query ); while ( rs.next() ) { int eta = rs.getInt(“eta”); rs.updateInt(“eta”, eta+1); rs.updateRow(); }

JDBC: (5) Chiusura Connessione Lab. Sistemi Informativi Economico-Aziendali JDBC: (5) Chiusura Connessione … // chiude la connessione al DB conn.close();

Lab. Sistemi Informativi Economico-Aziendali JDBC: MetaDati Sul database Su un ResultSet

JDBC: Metadati database Lab. Sistemi Informativi Economico-Aziendali JDBC: Metadati database … Connection con = …. ; DatabaseMetaData dbmd = con.getMetaData(); String catalog = null; // null = tutti String schema = null; String table = “sys%”; // le tabelle che iniziano per sys String[] types = null; ResultSet rs = dbmd.getTables(catalog , schema , table , types );

JDBC: Metadati resultset Lab. Sistemi Informativi Economico-Aziendali JDBC: Metadati resultset public static void printRS(ResultSet rs) throws SQLException { ResultSetMetaData md = rs.getMetaData(); // output nomi delle colonne int nCols = md.getColumnCount(); for(int i=1; i < nCols; ++i) System.out.print( md.getColumnName(i)+","); System.out.println( md.getColumnName(nCols)); …

JDBC: Metadati resultset Lab. Sistemi Informativi Economico-Aziendali JDBC: Metadati resultset …. // output resultset while ( rs.next() ) { for(int i=1; i < nCols; ++i) System.out.print( rs.getString(i)+","); System.out.println( rs.getString(nCols)); }

Lab. Sistemi Informativi Economico-Aziendali JDBC: Classi Java

JDBC: comandi preparati Lab. Sistemi Informativi Economico-Aziendali JDBC: comandi preparati Obiettivo: leggere un elenco di N nomi da un file CSV ed inserirli in una tabella N query SQL? INSERT INTO names (id, name) VALUES (1, ‘Luigi Rossi’) INSERT INTO names (id, name) VALUES (2, ‘Mario Bianchi’) … Tutte uguali tra loro, a parte i valori inseriti (parametri) Usando ? come segnaposto per dei valori: INSERT INTO names (id, name) VALUES (?, ?)

JDBC: comandi preparati Lab. Sistemi Informativi Economico-Aziendali JDBC: comandi preparati Connection con = …. ; String query = “INSERT INTO names (id, name) VALUES (?, ?)”; PreparedStatement st = con.prepareStatement(query); BufferedReader r = … ; int id = 1; String name; while( (name = r.readLine()) != null ) { st.setInt( 1, id++); st.setString( 2, name); st.executeUpdate(); }

JDBC: Date, Time e Timestamp Lab. Sistemi Informativi Economico-Aziendali JDBC: Date, Time e Timestamp Rappresentazione delle date 30.1.2004 30/1/2004 1.30.2004 Jan 30, 2004 30 Gen 2004 30/Gen/2004 January 30, 2004 … Identica pletora di rappresentazioni per Time ( 5:03:35.25 PM, 17:03:35.25 ) per Timestamp (= Date + Time )

JDBC: Date, Time e Timestamp Lab. Sistemi Informativi Economico-Aziendali JDBC: Date, Time e Timestamp Classi java.util Date Data posteriore al 1 Gen 1970 Precisione al millisec Indipendente dalla rappresentazione DateFormat / SimpleDateFormat Formatta/parsa una Date TimeZone Dettagli relativi a fuso orario e ora legale/solare Locale Dettagli relativi a convenzioni regionali sulla rappresentazione Calendar Accede/opera sui campi di una Date

JDBC: Date, Time e Timestamp Lab. Sistemi Informativi Economico-Aziendali JDBC: Date, Time e Timestamp Classi java.sql Date, Time, Timestamp Ereditano da java.util.Date Rappresentano tipo di dato SQL DATE TIME TIMESTAMP resultSet.getDate(“dataTransazione”);

Lab. Sistemi Informativi Economico-Aziendali JDBC ed oltre Esecuzione di Stored Procedures metodo execute() di Connection Aggiornamenti batch Più comandi UPDATE o INSERT raggruppati in un’unica richiesta Transazioni commit, rollback, transazioni distribuite Connection pooling riuso delle connessioni aperte

Lab. Sistemi Informativi Economico-Aziendali JDBC ed oltre (JNDI) Java Naming and Directory Interface repository URL di connessione (JDO) Java Data Object Persistenza di oggetti, avendo come repository un RDBMS Save, load da RDBMS (SQLJ) SQL in Java Java esteso con direttive #sql Controllo dei tipi a tempo di compilazione Metodi statici Java come SQL stored procedures Classi Java come tipi SQL SQLJ translator: > sqlj

Lab. Sistemi Informativi Economico-Aziendali SQLJ // SQLJ int n; #sql { INSERT INTO emp VALUES (:n)}; // JDBC Statement stmt = conn.prepareStatement (“INSERT INTO emp VALUES (?)”); stmt.setInt(1,n); stmt.execute (); stmt.close();

Esercitazione: FORMATO Lab. Sistemi Informativi Economico-Aziendali Esercitazione: FORMATO Scrivere un programma Java per la conversione da query SQL a file ARFF. Scrivere un programma Java per l’inserimento in una tabella delle righe contenute in un file ARFF.

Esercitazione: EXPORT Lab. Sistemi Informativi Economico-Aziendali Esercitazione: EXPORT Scrivere un programma Java per l’esportazione di una tabella da un database ad un altro.

Esercitazione: BINARIZZAZIONE Lab. Sistemi Informativi Economico-Aziendali Esercitazione: BINARIZZAZIONE La binarizzazione di un attributo A con valori distinti V1 … Vk consiste in una tabella con k attributi binari (valori 0/1) A1 … Ak. Per ciascuna riga dell’attributo originario con valore Vr esiste una riga della tabella avente valori Ai = 0 per i != r e con valore Ar = 1. A => Aalto Amedio Abasso alto 1 0 0 medio 0 1 0 basso 0 0 1 Scrivere un metodo Java che data una colonna di una tabella in RDBMS produce una nuova tabella (o file ARFF) ottenuta “binarizzando” tale colonna.

Esercitazione: RANDOMIZZAZIONE Lab. Sistemi Informativi Economico-Aziendali Esercitazione: RANDOMIZZAZIONE Scrivere un metodo Java che data una tabella in RDBMS (con una chiave ID) produce una nuova tabella (esportata come file CSV) ottenuta “mescolando” in modo casuale le chiavi della tabella.

Esercitazione: SUBSAMPLING (1) Lab. Sistemi Informativi Economico-Aziendali Esercitazione: SUBSAMPLING (1) Scrivere un metodo Java che data una tabella in RDBMS esporta su un file CSV il 30% delle righe. Le righe sono selezionate in modo casuale.

Esercitazione: SUBSAMPLING (2) Lab. Sistemi Informativi Economico-Aziendali Esercitazione: SUBSAMPLING (2) Scrivere un metodo Java che data una tabella in RDBMS con una colonna A binaria (0/1) esporta su un file CSV l’80% delle righe che hanno A=0. Le righe sono selezionate in modo casuale.

Esercitazione: SUBSAMPLING (3) Lab. Sistemi Informativi Economico-Aziendali Esercitazione: SUBSAMPLING (3) Scrivere un metodo Java che data una tabella in RDBMS con una colonna A binaria (0/1) esporta su un file CSV il 30% delle righe. Le righe sono selezionate in modo casuale. Le righe esportate devono mantenere la stessa proporzione di valori di A presente nella tabella originaria.