In questa esercitazione introduciamo l'uso dei database in java, mostrando alcuni semplici esempi di uso alternativo dei DB derby o postgresql.
Chi usa le macchine del laboratorio trova una installazione di Derby in /home/project/isi/derby.
Per prima cosa avviamo il database server e verifichiamo la connessione al db. Da una shell eseguiamo il comando:
------------- Apache DERBY ------------- /home/project/isi/derby/bin/startNetworkServer /home/project/isi/derby/bin/ij ij> CONNECT 'jdbc:derby:/my/home/path/derbyDB;create=true';
------------- PostgreSQL (richiede di aver creato utenza e database) ------------- service postgresql start psql -h localhost -U utente -d database
Creiamo adesso una tabella listino per il nostro negozio
CREATE TABLE ordini( codfiscale VARCHAR(255) NOT NULL, idordine VARCHAR(255) NOT NULL );
e verifichiamone la corretta creazione:
------------- Apache DERBY ------------- ij> DESCRIBE ordini; COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ CODFISCALE |VARCHAR |NULL|NULL|255 |NULL |510 |NO IDORDINE |VARCHAR |NULL|NULL|255 |NULL |510 |NO 2 righe selezionate
------------- PostgreSQL ------------- login=> \d public.ordini Table "public.ordini" Column | Type | Modifiers ---------------+------------------------+----------- codfiscale | character varying(255) | not null idordine | character varying(255) | not null
Costruiamo adesso una semplice classe java che:
Si connetta al database
Aggiunga un ordine
Visualizzi un sommario degli ordini registrati
Cancelli un ordine
Nota | |
---|---|
Ogni database utilizza i propri driver JDBC. Il driver per Apache DERBY che utilizziamo
è reperibile in Nel caso di installazioni personali, la libreria va sostituita con l'implementazione per la versione del database usata. Ad esempio per PostgreSQL potete trovare i driver nella pagina di download JDBC |
Connessione al database.
// Carica la classe del driver JDBC e richiedi una connessione al database // Apache Derby Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection connectionDB = DriverManager.getConnection("jdbc:derby://localhost:1527//my/home/path/derbyDB"); // PostgreSQL Class.forName("org.postgresql.Driver"); Connection connectionDB = DriverManager.getConnection("jdbc:postgresql://localhost:5432/database","username","password"); if(connectionDB==null){ System.err.println("Connection is null"); } // Ogni operazione viene immediatamente riportata sulla base di dati connectionDB.setAutoCommit(true);
Aggiunta di un record al listino.
String insertQuery = "INSERT INTO ordini VALUES (?,?)"; PreparedStatement pstmt = connectionDB.prepareStatement(insertQuery); pstmt.setString(1, codfiscale); pstmt.setString(2, idordine); int entriesModificate = pstmt.executeUpdate(); if(entriesModificate<0){ .. errore .. } pstmt.close();
Visualizzazione del contenuto di una tabella.
String selectQuery = "SELECT * FROM ordini"; PreparedStatement pstmt = connectionDB.prepareStatement(selectQuery); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ String codfiscale = rs.getString(1); String idordine = rs.getString(2); ... } rs.close(); pstmt.close();
Cancellazione del contenuto di una tabella.
String deleteQuery = "DELETE FROM ordini WHERE idordine=?"; PreparedStatement pstmt = connectionDB.prepareStatement(deleteQuery); pstmt.setString(1, idordine); int recordCancellati = pstmt.executeUpdate(); pstmt.close();
Verifichiamo il funzionamento dei metodi implementati scrivendo un'applicazione standalone che li utilizzi. Lo stesso codice può poi essere utilizzato in applicazioni Web Service.