giovedì 23 settembre 2010

JDBC, esempio

State scrivendo un'applicazione che usa un driver JDBC? Ecco i passi da seguire:

  1. Caricare il driver, specifico per il database in uso;
  2. Creare, mediante url, una connessione al database da usare;
  3. Scrivere e inviare il comando SQL alla connessione;
  4. Scorrere il risultato alla ricerca dei valori utili;
  5. Chiudere la connessione al database;

Per caricare il driver occorre specificare al metodo Class.forName(driver).newInstance() una stringa che identifica il nome del driver.  Ad esempio, la stringa che identifica il driver JDBC per MySQL è com.mysql.jdbc.Driver. Non dimenticate di invocare newIstance(), dopo aver cercato il driver, per creare una nuova istanza del driver! Altre stringhe di driver sono: sun.jdbc.odbc.JdbcOdbcDriver per un bridge (ponte) JDBC-ODBC, oracle.jdbc.driver.OracleDriver per Oracle e org.postgresql.Driver per PostgreSQL.

Anche l'url da usare per la connessione va cercato nella dicumentazione. MySQL e altri database sono sviluppati sul modello client/server. Il server che ospita dati, sia locale che remoto, è quindi identificato da un indirizzo di rete. Per MySQL questo url ha la seguente struttura: jdbc:mysql://indirizzo_host:porta/nomeDataBase. Se il server MySQL è dunque locale occorre indicare come host l'indirizzo localhost oppure il noto ip di loopback 127.0.0.1. Il numero di porta usato di default dal server MySQL è 3306 (se tale numero non è stato modificato dopo l'installazione del server). Con DriverManager.getConnection(url,user,password) viene tentata una connessione al database (specificato nell'url), se il database richiesto non è pubblico occorre allora indicare il nome utente e la password usate in fase di login (come quando usiamo il client MySQL dal terminale).

Terminata la fase di setup per la connessione si possono iniziare a utilizzare i metodi visti in precedenza per l'invio dei comandi SQL. Terminata l'elaborazione chiudete la connessione con il metodo connessione.close().


import java.sql.*;



public class Main {
 public static void main(String[] args) {
  String driver="com.mysql.jdbc.Driver";
  String user="root";
  String password="root";
  String url="jdbc:mysql://localhost:3306/php_training";
  String query="SELECT * FROM contatti WHERE nome='Luca'";
  try {
   System.out.println("Caricamento del driver ("+driver+")...");
   Class.forName(driver).newInstance();
   Connection connessione=DriverManager.getConnection(url,user,password);
   if(!connessione.isClosed()) System.out.println("Connessione...");
   else {
    System.out.println("Connessione non riuscita!");
    System.exit(1);
   }
   Statement stmt=connessione.createStatement();
   System.out.println("Esecuzione della query: "+query);
   System.out.println("Risultato:");
   ResultSet srs = stmt.executeQuery(query);
   while (srs.next()) {
    System.out.println(srs.getString("nome")+" "+srs.getString("cognome"));
   }
   connessione.close();
  }
  catch(Exception errore) {
   System.err.println("Si è verificata un'eccezione: " + errore.getMessage());
  }
 }
}

Ecco cosa riporta la finestra di output in NetBeans IDE (ho usato il database php_training):

Nessun commento:

Posta un commento