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.
- Articolo precedente JDBC e l'accesso ai database (Parte II)
- Articolo successivo JDBC e l'accesso ai database (Parte IV)