Esercitazione Database


1. Introduzione all'uso dei DB in java

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] Nota

Ogni database utilizza i propri driver JDBC. Il driver per Apache DERBY che utilizziamo è reperibile in /home/projects/isi/derby/lib/derbyclient.jar ed il Tomcat di dipartimento è già configurato per utilizzarlo.

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.

Footer BGFooter BG
Tito Flagella - © 2007-2015