MySQL JDBC Tutorial

October 28

Il Java Database Connectivity (JDBC o) API è un insieme di classi standard progettati per fornire una singola interfaccia unificata per il collegamento a tutte le principali soluzioni di database. i database supportati per il JDBC comprendono MySQL, Oracle, PostgreSQL, DB2 e Microsoft SQL Server. In questo articolo utilizzerà il software di database open source, MySQL, per illustrare i principi JDBC.

Scaricare e collegamento al driver MySQL JDBC

JDBC richiede un driver per ogni tipo di database che si collegherà a, e la produzione e la manutenzione di tale driver è la responsabilità degli sviluppatori del software di database. Nel caso di MySQL, il pilota ufficiale JDBC è chiamato MySQL :: Connector / J, e può essere ottenuto gratuitamente dalla pagina web di MySQL. Il conducente sarà un file JAR, e questo file deve essere nel percorso di classe Java. La maggior parte di Java IDE la volontà di gestire questo automaticamente per voi se si aggiunge il file del driver come una libreria esterna.

Tutti i comandi necessari per interagire con il JDBC dovrebbero essere disponibili tramite l'importazione java.sql. * Nella parte superiore del file di classe.

Registrare il driver

Questo non richiede di inviare un modulo di registrazione a Sun. Questo per dire che Java driver di database che si sta per essere utilizzare con la JDBC per le query. Si registra il driver con il seguente comando:

Autista D = (driver) Class.forName ( "com.mysql.jdbc.Driver"). NewInstance ()
ANDARE

Il contenuto del nome del conducente (com.mysql.jdbc.Driver) si applica solo a MySQL. La stringa preciso necessario per altri driver di database (ad esempio PostgreSQL) sarà diverso.

Se si riceve un java.lang.ClassNotFoundException, questo molto probabilmente significa che il driver non si trova sul percorso di classe.

stabilire Connection

Le connessioni sono stabilite con il seguente comando:

Connection conn = DriverManager.getConnection (URL, username, password);

Se il database si trova sulla stessa macchina del client Java accedervi, poi "localhost" funzionerà come un indirizzo nella maggior parte dei casi. Se il numero di porta per il database non è l'impostazione predefinita per il pacchetto base di dati, allora può essere aggiunto alla URL usando i due punti.

Un'aggiunta importante è l'identificativo URL. Questo cambierà per i diversi server di database. Tuttavia, per MySQL, la seguente sarebbe valido:
String URL = "jdbc: mysql: // localhost: 8080"
ANDARE

Nel caso di una connessione fallire per qualsiasi motivo, un SQLException sarà gettato, e conterrà un messaggio di errore con più informazioni che è possibile stampare a System.err per il debug.

Timeout di database

E 'importante ricordare che, come di creare il collegamento, esiste una connessione attiva tra client e server. Tuttavia, molte basi di dati hanno requisiti di time-out molto stretti. E 'importante che la connessione non riconosciuta finché query sono pronti. Invece di stabilire una connessione e quindi attendere l'input dell'utente per sapere quali query per l'esecuzione, è meglio stabilire una connessione di prova, scollegare e ricollegare una volta query sono disponibili.

Eseguire query e recuperare i risultati

Per il rilascio di una query, è necessario creare una dichiarazione mediante una connessione attiva al database.

Statement s = conn.createStatement ()
ANDARE
s.executeQuery ( "SELECT * FROM" + tableName)
ANDARE

Per ottenere i risultati, è possibile eseguire immediatamente:

rs = ResultSet s.getResultSet ();

ResultSets

Una cosa importante da sapere è che ResultSets tirano i dati da quella fila server alla volta. Il comando precedente inizializza solo un oggetto ResultSet e ottiene alcuni metadati su quell'oggetto (nomi soprattutto di colonne e tipi). Essa in realtà non recuperare tutti i dati. I dati devono essere tirati fuori di un ResultSet e memorizzati in un'altra posizione prima che venga chiusa, generalmente con un anello che assomiglia a:

dati LinkedList = new LinkedList ()
ANDARE
while (rs.next ()) {
data.add (rs.getString (1)); // Recuperare tutti i dati dalla prima colonna
}

Chiudere Connessioni

La maggior parte del tempo, il conducente gestirà chiusura connessioni stesso. Tuttavia, può aiutare a prevenire problemi in seguito se si chiude sempre in modo esplicito la tua ResultSet, Normativa e connessioni quando si è finito con loro.

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