MySQL Java Tutorial

April 12

Il Developers Kit Java include un pacchetto conosciuto come API Java Database Connectivity, o JDBC in breve. Questo fornisce una singola interfaccia per interagire con qualsiasi pacchetto database che fornisce un driver JDBC. La maggior parte delle soluzioni di database importanti, tra cui MySQL, forniscono un driver JDBC o sui loro dischi di installazione o liberamente scaricabile dalla loro pagina web.

Il driver MySQL JDBC

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, particolarmente Eclipse e Netbeans, lo farà per voi, a patto di fare riferimento al file driver come una libreria. Inoltre, al fine di utilizzare i comandi da JDBC API, è necessario inserire il seguente comando nella parte superiore di ogni classe che utilizzerà direttamente il JDBC.

import java.sql. *;

Impostare

Mentre il JDBC tenta di fare con i 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 più driver di database, prima di collegare a un database è necessario informare l'API di quale driver che verrà utilizzato. Per questo, si esegue il seguente:

Class.forName (\ "com.mysql.jdbc.Driver \"). NewInstance ()
ANDARE

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 dei casi. Se dovessi ricevere un errore, questo molto probabilmente significa che il percorso della 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 un'aggiunta significativa: il protocollo (o URL) identificatore. A un familiare per il Web è \ "http: // \ & quot ;. Per un database MySQL JDBC, l'identificatore di protocollo corretto è \" jdbc: mysql: // \ ".

Connection conn = DriverManager.getConnection (\ "jdbc: mysql: // localhost \", username, password);

Trattare con errori

Qualsiasi errore riguardante una connessione, un'istruzione o 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 per la console. Una potenziale fonte di confusione è velocità con cui le connessioni time out. C'è un sacco di tempo per la connessione, eseguire un paio di domande e ottenere risultati, ma quasi certamente non c'è tempo per aspettare l'input dell'utente dopo la connessione. Se è necessario attendere per l'input dell'utente, di solito è una pratica migliore per staccare, recuperare l'input dell'utente e quindi ricollegare di nuovo per eseguire le query.

Query e Risultati

Ci sono due classi fondamentali per l'interazione con il database, una volta collegato: la dichiarazione e di risultati.

Statement s = conn.createStatement ()
ANDARE
s.executeQuery ( "SELECT * FROM dipendenti")
ANDARE
rs = ResultSet s.getResultSet ()
ANDARE

Dichiarazione invia semplicemente la stringa SQL al database, quindi dovranno essere scritte nel dialetto nativo di SQL per il database utilizzato query. Una qualità importante di un ResultSet è che recupera i dati da una riga server alla volta, e solo recupera i dati quando la riga viene chiesto. Il codice di cui sopra non ha scaricato ancora alcun risultato dal server.

Poiché è impossibile in molti sistemi di conoscere le dimensioni di un set di risultati prima che tutti i risultati sono stati recuperati, è meglio per memorizzare un insieme di risultati, almeno temporaneamente, in una struttura di dati che può essere ridimensionato in modo efficiente. classe LinkedList di Java è perfetto per questo.

risultati LinkedList = new LinkedList ()
ANDARE
while (rs.next ()) {
results.add (rs.getString (\ "Nome \"))
ANDARE
}

Ed è sempre una buona pratica per chiudere le connessioni in modo esplicito, piuttosto che lasciarli timeout:

rs.Close ()
ANDARE
s.close ()
ANDARE
conn.Close ();