Il Java Developers Kit comprende un pacchetto conosciuto come il Java Database Connectivity API , o il JDBC in breve. Questo fornisce una singola interfaccia per interagire con qualsiasi pacchetto di database che fornisce un driver JDBC . Soluzioni di database più importanti, tra cui MySQL , forniscono un driver JDBC sia sui loro dischi di installazione o scaricabile gratuitamente dal loro sito web . Il MySQL JDBC driver
Il driver JDBC per MySQL è chiamato MySQL :: Connector /J , ed è una implementazione molto approfondita di JDBC API . L'autista sarà un file JAR , che deve essere situato sul percorso di classe Java . Il più comune Java IDE , in particolare Eclipse e Netbeans , lo farà per voi , a patto che fa riferimento il file del driver come una libreria . Inoltre , al fine di utilizzare i comandi da JDBC API , è necessario inserire il seguente comando nella parte superiore di qualsiasi classe che utilizzerà direttamente il JDBC
import java.sql
* , .
.
Setup
Mentre i tentativi JDBC per rendere l'utilizzo dei database nei vostri programmi Java più semplice possibile , ci sono una serie di passi da seguire per configurare la connessione al database . Dal momento che è possibile scrivere un programma che include i driver di database , prima di connettersi a un database è necessario informare l'API di driver che si intende utilizzare. Per questo , si esegue il seguente : .
Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ();
Ciò restituirà un'istanza della classe del driver (che è incluso nel java.sql ) , ed è possibile memorizzare il riferimento a tale istanza per un uso successivo , se volete. Tuttavia , non è necessario nella maggior parte delle circostanze. Se dovessi ricevere un errore , questo significa probabilmente che il percorso classe non è configurato correttamente .
Creazione di una connessione
La connessione al database deve essere effettuato utilizzando un URL o un indirizzo IP. Se il database è in esecuzione sulla stessa macchina del programma Java , questo è facile : L'URL è localhost , con una significativa aggiunta : identificatore di protocollo ( o URL ) . Un familiare per il Web è "http://" . Per un database MySQL JDBC , l'identificatore di protocollo corretto è " jdbc : mysql ://"
Connection conn = DriverManager.getConnection ( " jdbc : mysql ://localhost" , nome utente, password ) . < Br >
fare con gli errori
Qualsiasi errore relativo di una connessione , una dichiarazione o di un set di risultati sarà del tipo SQLException . Per maggiori dettagli su l'errore specifico , si dovrebbe prendere SQLException e stampare il messaggio di errore sulla console. Una potenziale fonte di confusione è la velocità con cui le connessioni time out . C'è un sacco di tempo per la connessione, eseguire alcune query e ottenere risultati , ma quasi certamente non c'è tempo di attesa per l'input dell'utente dopo la connessione. Se è necessario attendere l'input dell'utente , di solito è una pratica migliore per staccare , recuperare l'input dell'utente e ricollegare di nuovo per eseguire le query .
Query e risultati
Ci sono due classi fondamentali per l'interazione con il database , una volta collegato : L'istruzione e il ResultSet
Statement s = conn.createStatement (); s.executeQuery ( "SELECT * FROM dipendenti "); ResultSet rs = s . . getResultSet ();
Dichiarazione semplicemente invia la stringa SQL al database , quindi le query dovrà essere scritto in dialetto nativo di SQL per il database utilizzato . Una qualità importante di un ResultSet è che recupera i dati dal server di una riga alla volta , e recupera solo i dati quando la riga viene chiesto. Il codice di cui sopra non ha ancora scaricato alcun risultato dal server .
Perché è impossibile sulla maggior parte dei sistemi di conoscere le dimensioni di un set di risultati prima che tutti i risultati sono stati recuperati , è meglio conservare un set di risultati , almeno temporaneamente , all'interno di una struttura di dati che può essere ridimensionato efficientemente . Classe LinkedList di Java è perfetto per questo
risultati LinkedList = new LinkedList (); . Mentre ( rs.next ( ) ) { results.add ( rs.getString ( "Nome ")); }
< p > E , è sempre buona norma chiudere le connessioni in modo esplicito , piuttosto che lasciarli timeout :
rs.close (); s.close (); Conn.Close ( ) ;