JDBC - Connessioni al database
Dopo aver installato il driver appropriato, è il momento di stabilire una connessione al database utilizzando JDBC.
La programmazione necessaria per stabilire una connessione JDBC è abbastanza semplice. Ecco questi semplici quattro passaggi:
Import JDBC Packages: Inserisci import istruzioni al programma Java per importare le classi richieste nel codice Java.
Register JDBC Driver: Questo passaggio fa sì che la JVM carichi l'implementazione del driver desiderata in memoria in modo che possa soddisfare le tue richieste JDBC.
Database URL Formulation: Questo per creare un indirizzo formattato correttamente che punti al database a cui desideri connetterti.
Create Connection Object:Infine, codifica una chiamata al metodo getConnection () dell'oggetto DriverManager per stabilire la connessione effettiva al database.
Importa pacchetti JDBC
Il Import le istruzioni indicano al compilatore Java dove trovare le classi a cui fai riferimento nel codice e sono collocate all'inizio del codice sorgente.
Per utilizzare il pacchetto JDBC standard, che consente di selezionare, inserire, aggiornare ed eliminare i dati nelle tabelle SQL, aggiungere le seguenti importazioni al codice sorgente:
import java.sql.* ; // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support
Registra driver JDBC
È necessario registrare il driver nel programma prima di utilizzarlo. La registrazione del driver è il processo mediante il quale il file di classe del driver Oracle viene caricato nella memoria, quindi può essere utilizzato come implementazione delle interfacce JDBC.
È necessario eseguire questa registrazione solo una volta nel programma. Puoi registrare un conducente in due modi.
Approccio I - Class.forName ()
L'approccio più comune per registrare un driver consiste nell'usare Java Class.forName()metodo, per caricare dinamicamente il file di classe del driver in memoria, che lo registra automaticamente. Questo metodo è preferibile perché consente di rendere configurabile e portabile la registrazione del driver.
L'esempio seguente utilizza Class.forName () per registrare il driver Oracle -
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Puoi usare getInstance() metodo per aggirare le JVM non conformi, ma poi dovrai codificare per due eccezioni extra come segue:
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex) {
System.out.println("Error: access problem while loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
Approccio II - DriverManager.registerDriver ()
Il secondo approccio che puoi usare per registrare un driver è usare lo static DriverManager.registerDriver() metodo.
È necessario utilizzare il metodo registerDriver () se si utilizza una JVM non conforme a JDK, come quella fornita da Microsoft.
L'esempio seguente utilizza registerDriver () per registrare il driver Oracle -
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Formulazione dell'URL del database
Dopo aver caricato il driver, è possibile stabilire una connessione utilizzando il file DriverManager.getConnection()metodo. Per una facile consultazione, consentitemi di elencare i tre metodi DriverManager.getConnection () sovraccaricati -
getConnection (URL stringa)
getConnection (URL stringa, proprietà prop)
getConnection (URL stringa, utente stringa, password stringa)
Qui ogni modulo richiede un database URL. Un URL di database è un indirizzo che punta al tuo database.
La formulazione di un URL di database è il luogo in cui si verificano la maggior parte dei problemi associati alla creazione di una connessione.
La tabella seguente elenca i nomi dei driver JDBC più diffusi e l'URL del database.
RDBMS | Nome del driver JDBC | Formato URL |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname / databaseName |
ORACOLO | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@hostname: numero porta: databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:hostname: numero di porta / databaseName |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:hostname: numero di porta / databaseName |
Tutta la parte evidenziata in formato URL è statica ed è necessario modificare solo la parte rimanente secondo la configurazione del database.
Crea oggetto di connessione
Abbiamo elencato tre forme di DriverManager.getConnection() metodo per creare un oggetto di connessione.
Utilizzo di un URL del database con un nome utente e una password
La forma più comunemente usata di getConnection () richiede di passare un URL di database, un nome utente e una password :
Supponendo che tu stia utilizzando Oracle thin driver, dovrai specificare un valore host: port: databaseName per la parte del database dell'URL.
Se si dispone di un host all'indirizzo TCP / IP 192.0.0.1 con un nome host di amrood e il listener Oracle è configurato per l'ascolto sulla porta 1521 e il nome del database è EMP, l'URL del database completo sarà:
jdbc:oracle:thin:@amrood:1521:EMP
Ora devi chiamare il metodo getConnection () con nome utente e password appropriati per ottenere un file Connection oggetto come segue -
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);
Utilizzando solo un URL di database
Una seconda forma del metodo DriverManager.getConnection () richiede solo un URL del database -
DriverManager.getConnection(String url);
Tuttavia, in questo caso, l'URL del database include il nome utente e la password e ha la seguente forma generale:
jdbc:oracle:driver:username/[email protected]
Quindi, la connessione di cui sopra può essere creata come segue:
String URL = "jdbc:oracle:thin:username/[email protected]:1521:EMP";
Connection conn = DriverManager.getConnection(URL);
Utilizzo di un URL di database e di un oggetto Proprietà
Una terza forma del metodo DriverManager.getConnection () richiede un URL del database e un oggetto Properties -
DriverManager.getConnection(String url, Properties info);
Un oggetto Properties contiene una serie di coppie di parole chiave-valore. Viene utilizzato per passare le proprietà del driver al driver durante una chiamata al metodo getConnection ().
Per effettuare la stessa connessione creata dagli esempi precedenti, utilizzare il codice seguente:
import java.util.*;
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn = DriverManager.getConnection(URL, info);
Chiusura delle connessioni JDBC
Alla fine del programma JDBC, è richiesto esplicitamente di chiudere tutte le connessioni al database per terminare ogni sessione di database. Tuttavia, se dimentichi, il garbage collector di Java chiuderà la connessione quando ripulirà gli oggetti obsoleti.
Affidarsi alla garbage collection, specialmente nella programmazione di database, è una pratica di programmazione molto scarsa. Dovresti prendere l'abitudine di chiudere sempre la connessione con il metodo close () associato all'oggetto connessione.
Per assicurarti che una connessione sia chiusa, potresti fornire un blocco "finalmente" nel tuo codice. Un blocco finalmente viene sempre eseguito, indipendentemente dal fatto che si verifichi o meno un'eccezione.
Per chiudere la connessione aperta sopra, dovresti chiamare il metodo close () come segue:
conn.close();
La chiusura esplicita di una connessione conserva le risorse DBMS, il che renderà felice l'amministratore del database.
Per una migliore comprensione, ti suggeriamo di studiare il nostro tutorial JDBC - Codice di esempio .