ITportal
a- a+

JDBC e l'accesso ai database (Parte III)

Pagina 3 di 4

Passiamo in rassegna le operazioni effettuate:

<%@ page import="java.sql.*" %>


Con questa riga viene reso visibile il contenuto delpacchetto java.sql, che contiene le API JDBC.

<%! String DRIVER = "com.mysql.jdbc.Driver";String DB_URL = "jdbc:mysql://localhost:3306/JSPTest"; %>


Qui vengono dichiarate due stringhe. La prima tiene tracciadel nome del driver JDBC di cui ci si dovrà servire.Nel caso di Connector/J, che abbiamo installato inprecedenza, il percorso da indicare è propriocom.mysql.jdbc.Driver. Con la stringa DB_URL, invece, sitiene traccia del database cui connettersi. La sintassidesiderata da Connector/J è la seguente:

jdbc:mysql://[hostname][:port]/[dbname][?param1=value1][¶m2=value2]...


In questo caso, si è supposto che MySQL sia inesecuzione sulla stessa macchina che gestirà la paginaJSP (localhost) e che la porta ascoltata dal DBMS sia lanumero 3306 (la predefinita di MySQL). Quindi, è statospecificato il nome del database con cui lavorare (JSPTest,creato poco sopra). Non sono stati impiegati parametriaggiuntivi. Se il database da voi realizzato è statoprotetto con una coppia di dati username-password,bisognerà impiegare una lista di parametri cosìorganizzata:

jdbc:mysql://localhost:3306/JSPTest?user=nome&password=pass


In definitiva, il percorso specificato nel codice di esempiodeve essere variato in base alle esigenze.

Class.forName(DRIVER);


Questa istruzione carica in memoria il driver, in modo chepossa poi essere sfruttato dal codice Java che segue.

Connection connection = null;


Viene preparato il riferimento ad un oggetto Connection,necessario per stabilire una connessione con il DBMS. Tuttoquello che segue è racchiuso in un blocco try ...catch, poiché a rischio di eccezione: i disguidi,infatti, sono sempre in agguato (il DBMS, ad esempio,potrebbe essere momentaneamente non disponibile).

Connection connection = DriverManager.getConnection(DB_URL);


Questa istruzione stabilisce la connessione ricercata.

Statement statement = connection.createStatement();


Questa riga prepara ed ottiene un oggetto Statement. Questotipo di oggetto è necessario per interagire con ilDBMS attraverso delle query espresse servendosi dellinguaggio SQL.

ResultSet resultset = statement.executeQuery(  "SELECT Nome, Cognome, Indirizzo FROM Persone");


Una query SQL che recupera l'intero contenuto dellatabella Persone viene sottoposta al DBMS. I risultati sarannoconservati in un oggetto di tipo ResultSet.

while (resultset.next()) { ... }


Questo ciclo scorre l'insieme dei risultati ottenuti. Ilcorpo del ciclo sarà ripetuto tante volte quanti sonoi record restituiti da DBMS. Il metodo next() di un oggettoRecordSet, infatti, ha duplice funzionalità: scorre inavanti l'elenco dei record ottenuti e restituisce truefin quando non si giunge al termine dell'esplorazione.

String nome =  resultset.getString(1);String cognome  =  resultset.getString(2);String indirizzo    =  resultset.getString(3);


All'interno del ciclo while, i singoli campi dellatabella Persone vengono recuperati e memorizzatiall'interno di apposite stringhe.

<b>Nome:</b> <%= nome %><br><b>Cognome:</b> <%= cognome %><br><b>Indirizzo:</b> <%= indirizzo %><br><br>


Questo codice mostra i risultati in output.

if (connection != null) connection.close();


La connessione, al termine di ogni operazione (clausolafinally) viene chiusa, se attiva.

Continua >>>