Connessioni JDBC

« Older   Newer »
  Share  
view post Posted on 7/5/2010, 21:53

Group:
,,,..--::|| AMMINISTRATORE ||::--..,,,
Posts:
1,602
Location:
Scheda di rete

Status:


La tecnologia Java ha ottenuto anche molto successo grazie all'accesso al Database JDBC, concorrenziale all'ormai noto ODBC.; come dall'otitca multipiattaforma di sviluppo le Connseeioni JDBC sono studiate per potersi collegare a qualsiasi motore Database, indipendentemente da esso e dalla piattaforma di utilizzo. La rivoluzione stà proprio nel fatto che nessuna riga di codice dovrà essere cambiata nel caso si cambi il motore Database, ad esempio se una azienda vuole migrare i propri dati aziendali da un Database come Oracle o DB2 della IBM, su un Database Engine gratuito come MySQL non dovrà cambiare dinuovo tutto il programma o le righe di codice assegnate per le connessioni, JDBC si occupa di far comunicare Java con il motore Database, dimezzando i tempi di sviluppo.

Naturalmente questa nuova tecnologia sui Database, permette una ancora più ampia flessibilità nello sviluppo di applicazioni multidistribuite. Possiamo programmare una soluzione totalmente in Linux ed eseguirla in Windows o in un Macintosh grazie alla possibilità di interagire con qualsiasi Motore Database.

JDBC dovrebbe essere l'acronimo non ufficiale di Java DataBase Connectivity: Connettività Java ai DataBase. E' composto da due componenti principali: una implementazione delle specifiche RDBMS del Vendor, anche di terze parti, conforme alle specifiche API di java.sql e una implementazione dell'applicazione da parte del programmatore.

L'implementazione delle interfacce del Vendor sono definite dal Package java.sql, e sono: Connection, Driver, Statement, PreparedStatement, CallableStatement, Resultset, ResultSetMetaData e DatabaseMetaData. La maggior parte dei Vendor di terze parti comunque allega una ampia documentazione a proposito delle connesisoni JDBC, spesso comprime il codice già pronto per una implementazione in pacchetti .JAR, in maniera da semplificare ulteriormente il lavoro.

Pertanto grazie a questa tecnica l'implementazione da parte del programmatore risulta abbastanza semplice, questi i passi essenziali: Caricare il Driver - Aprire una Connessione al Database - Creare un Oggetto Statement - Interagire con il Database - Gestire e visualizzare i risultati ottenuti dalle ResultSet.
Facciamo un esempio:

import java.sql.*;

public class ProvaJDBC
{
public static void main (String args[])
{
try
{
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
String url = "jdbc:odbc:myDataSource";
Connection con = DriverManager.getConnection
(url, "username", "password");
Statement cmd = con.createStatement();
String query = "SELECT * FROM nomeTabella";
ResultSet res = cmd.executeQuery(query);
while (res.next())
{
System.out.println(res.getString("nomeColonna1"));
System.out.println(res.getString("nomeColonna2"));
}
res.close(); // chiudere le risorse DB è obbligatorio
cmd.close();
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}

Avete visto che con poche righe di programmazione si è creati una Connesisone ad un Database ODBC / JDBC nel server, indipendentemente dal tipo di database, o dalla piattaforma, nella Connessione passiamo i tre dati essenziali: il nome del database, un username e la sua password. Grazie al metodo executeQuery() dell'oggetto Statement eseguiamo l'istruzione SQL impostata precedentemente in una Stringa. Infine con un ciclo while collegato al metodo next() del ResultSet (tabella calcolata dalla Query eseguita) stampiamo a schermo i valori delle prime due colonne. Ricordarsi sempre di utilizzare i metodi close() per ogni oggetto aperto, in questo caso per il ResultSet, per la Statement e per la Connection; infatti molti programmatori sanno che quando si lavora con i database è indispensabile liberare la memoria, anche per avere dei processi più veloci.

Infine gestiamo anche due errori da tenere spesso in considerazione: l'SQLException ci indica quando abbiamo sbagliato una istruzione SQL, mente la ClassNotFoundException è utile nel caso in cui fallisca il caricamento della classe Driver con il metodo forName() dell'oggetto Class.

Per studiare a fondo il capitolo JDBC vi rimando alla completa documentazione della Sun Microsystem:

http://java.sun.com/products/jdbc/index.html

dove potrete trovare tutorial ed esempi di sviluppo.
 
Web     Top
0 replies since 7/5/2010, 21:53   129 views
  Share