Quando dobbiamo utilizzare un database locale (ad esempio un database access) in Java bisogna caricare il rispettivo Driver e selezionare il database nell'Origine dati (ODBC) (è possibile vedere più precisamente come a questo link).
Di seguito riporto un banale esempio:
La classe contiene un solo metodo,openConnection(),che si occupa di aprire la connessione con il database.Al suo interno troviamo due blocchi di gestione delle eccezioni (due blocchi try-catch),nel primo vediamo il caricamento del Driver JDBC(noto anche come "JDBC-ODBC Bridge") che sfrutta in modo nativo ODBC (infatti le chiamate ai metodi JDBC vengono convertire in chiamate a funzione ODBC),nel secondo blocco l'apertura della connessione utilizzando il metodo getConnection() di classe DriverManager.
Per ovviare alla rottura di dover ogni volta andare ad impostrare nell'origina dati la connessione al database,con una piccola modifica al codice possiamo comunque aprire la nostra connessione al database.In questo modo sarà il nostro programma,e non l'ODBC,a caricare il driver necessario.Tutto ciò che ci serve è la tabella presente in fondo alla pagina al link precedente che per comodità riporto anche qui:
[align=center][img=500x400]http://img709.imageshack.us/img709/2749/stringimage.jpg[/img]
(Clicca sull'immagine per ingrandire)[/align]
Tutto quello di cui abbiamo bisogno è della rispettiva stringa nella tabella appena riportata.Nel nostro esempio utilizziamo un database Access passando attraverso l'ODBC (anche se in modo indiretto),la stringa che andremo ad utilizzare quindi sarà :
Ipotizzando che il nostro database si trovi in C: \ ,si chiami myDatabase.mdb e non abbia restrizioni,il nostro codice diventa:
la modifica viene apportata nel secondo blocco try-catch e ci permette di caricare in modo diretto il driver da utilizzare per aprire la connessione sul database specificato.
[ot]mi è venuta la voglia di trovare un modo per ovviare alla rottura di impostare ogni volta l'ODBC ed ecco qui la soluzione...so sicuro che se la mostro al mio professore di informatica anche quest'anno dirà che io i programmi li copio da internet e che non è tutto frutto del mio sacco (ed io odio quando non mi viene attribuito il mio lavoro).[/ot]
Di seguito riporto un banale esempio:
Codice:
import javax.swing.JOptionPane;
import java.sql.*;
public class ConnectionExample{
String url="jdbc:odbc:mydatabase";
Connection con;
public void openConnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Driver per database non trovato: "+e.getMessage(),"Messaggio:",0,null);
}try{
con = DriverManager.getConnection(url,"","");
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Connessione Fallita: "+e.getMessage(),"Messaggio:",0,null);
}
}
}
La classe contiene un solo metodo,openConnection(),che si occupa di aprire la connessione con il database.Al suo interno troviamo due blocchi di gestione delle eccezioni (due blocchi try-catch),nel primo vediamo il caricamento del Driver JDBC(noto anche come "JDBC-ODBC Bridge") che sfrutta in modo nativo ODBC (infatti le chiamate ai metodi JDBC vengono convertire in chiamate a funzione ODBC),nel secondo blocco l'apertura della connessione utilizzando il metodo getConnection() di classe DriverManager.
Per ovviare alla rottura di dover ogni volta andare ad impostrare nell'origina dati la connessione al database,con una piccola modifica al codice possiamo comunque aprire la nostra connessione al database.In questo modo sarà il nostro programma,e non l'ODBC,a caricare il driver necessario.Tutto ciò che ci serve è la tabella presente in fondo alla pagina al link precedente che per comodità riporto anche qui:
[align=center][img=500x400]http://img709.imageshack.us/img709/2749/stringimage.jpg[/img]
(Clicca sull'immagine per ingrandire)[/align]
Tutto quello di cui abbiamo bisogno è della rispettiva stringa nella tabella appena riportata.Nel nostro esempio utilizziamo un database Access passando attraverso l'ODBC (anche se in modo indiretto),la stringa che andremo ad utilizzare quindi sarà :
Codice:
driver={Microsoft Access Driver (*.mdb)}; dbq=C:\database.mdb; id=Admin; Pwd=Prova;
Ipotizzando che il nostro database si trovi in C: \ ,si chiami myDatabase.mdb e non abbia restrizioni,il nostro codice diventa:
Codice:
import javax.swing.JOptionPane;
import java.sql.*;
public class ConnectionExample{
String url="jdbc:odbc:mydatabase";
Connection con;
public void openConnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Driver per database non trovato: "+e.getMessage(),"Messaggio:",0,null);
}try{
con=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\myDatabase.mdb");
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Connessione Fallita: "+e.getMessage(),"Messaggio:",0,null);
}
}
}
la modifica viene apportata nel secondo blocco try-catch e ci permette di caricare in modo diretto il driver da utilizzare per aprire la connessione sul database specificato.
[ot]mi è venuta la voglia di trovare un modo per ovviare alla rottura di impostare ogni volta l'ODBC ed ecco qui la soluzione...so sicuro che se la mostro al mio professore di informatica anche quest'anno dirà che io i programmi li copio da internet e che non è tutto frutto del mio sacco (ed io odio quando non mi viene attribuito il mio lavoro).[/ot]