JDBC - Connexions aux bases de données

Après avoir installé le pilote approprié, il est temps d'établir une connexion à la base de données à l'aide de JDBC.

La programmation impliquée pour établir une connexion JDBC est assez simple. Voici ces quatre étapes simples -

  • Import JDBC Packages: Ajouter import à votre programme Java pour importer les classes requises dans votre code Java.

  • Register JDBC Driver: Cette étape oblige la JVM à charger l'implémentation de pilote souhaitée en mémoire afin qu'elle puisse répondre à vos demandes JDBC.

  • Database URL Formulation: Il s'agit de créer une adresse correctement formatée qui pointe vers la base de données à laquelle vous souhaitez vous connecter.

  • Create Connection Object:Enfin, codez un appel à la méthode getConnection () de l' objet DriverManager pour établir une connexion réelle à la base de données.

Importer des packages JDBC

le Import Les instructions indiquent au compilateur Java où trouver les classes auxquelles vous faites référence dans votre code et sont placées au tout début de votre code source.

Pour utiliser le package JDBC standard, qui vous permet de sélectionner, insérer, mettre à jour et supprimer des données dans des tables SQL, ajoutez les importations suivantes à votre code source:

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

Enregistrer le pilote JDBC

Vous devez enregistrer le pilote dans votre programme avant de l'utiliser. L'enregistrement du pilote est le processus par lequel le fichier de classe du pilote Oracle est chargé dans la mémoire, afin qu'il puisse être utilisé comme une implémentation des interfaces JDBC.

Vous ne devez effectuer cette inscription qu'une seule fois dans votre programme. Vous pouvez enregistrer un conducteur de deux manières.

Approche I - Class.forName ()

L'approche la plus courante pour enregistrer un pilote est d'utiliser Java Class.forName(), pour charger dynamiquement le fichier de classe du pilote en mémoire, qui l'enregistre automatiquement. Cette méthode est préférable car elle vous permet de rendre l'enregistrement du pilote configurable et portable.

L'exemple suivant utilise Class.forName () pour enregistrer le pilote Oracle -

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Vous pouvez utiliser getInstance() méthode pour contourner les JVM non conformes, mais vous devrez ensuite coder pour deux exceptions supplémentaires comme suit -

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);
}

Approche II - DriverManager.registerDriver ()

La deuxième approche que vous pouvez utiliser pour enregistrer un pilote consiste à utiliser le DriverManager.registerDriver() méthode.

Vous devez utiliser la méthode registerDriver () si vous utilisez une JVM non compatible JDK, telle que celle fournie par Microsoft.

L'exemple suivant utilise registerDriver () pour enregistrer le pilote 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);
}

Formulation d'URL de base de données

Après avoir chargé le pilote, vous pouvez établir une connexion à l'aide du DriverManager.getConnection()méthode. Pour une référence facile, permettez-moi de lister les trois méthodes surchargées de DriverManager.getConnection () -

  • getConnection (chaîne url)

  • getConnection (URL de chaîne, prop Propriétés)

  • getConnection (URL de chaîne, utilisateur de chaîne, mot de passe de chaîne)

Ici, chaque formulaire nécessite une base de données URL. Une URL de base de données est une adresse qui pointe vers votre base de données.

La formulation d'une URL de base de données est l'endroit où se produisent la plupart des problèmes associés à l'établissement d'une connexion.

Le tableau suivant répertorie les noms de pilotes JDBC populaires et l'URL de la base de données.

SGBDR Nom du pilote JDBC Format d'URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://nom d'hôte / nom de base de données
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@nom d'hôte: numéro de port: nom de base de données
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:nom d'hôte: numéro de port / nom de base de données
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:nom d'hôte: numéro de port / nom de base de données

Toute la partie en surbrillance au format URL est statique et vous devez modifier uniquement la partie restante selon la configuration de votre base de données.

Créer un objet de connexion

Nous avons répertorié trois formes de DriverManager.getConnection() méthode pour créer un objet de connexion.

Utilisation d'une URL de base de données avec un nom d'utilisateur et un mot de passe

La forme la plus couramment utilisée de getConnection () vous oblige à transmettre une URL de base de données, un nom d'utilisateur et un mot de passe :

En supposant que vous utilisez Oracle thin driver, vous allez spécifier une valeur host: port: databaseName pour la partie base de données de l'URL.

Si vous avez un hôte à l'adresse TCP / IP 192.0.0.1 avec un nom d'hôte amrood et que votre écouteur Oracle est configuré pour écouter sur le port 1521 et que le nom de votre base de données est EMP, l'URL complète de la base de données serait -

jdbc:oracle:thin:@amrood:1521:EMP

Vous devez maintenant appeler la méthode getConnection () avec le nom d'utilisateur et le mot de passe appropriés pour obtenir un Connection objet comme suit -

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

Utiliser uniquement une URL de base de données

Une deuxième forme de la méthode DriverManager.getConnection () ne nécessite qu'une URL de base de données -

DriverManager.getConnection(String url);

Cependant, dans ce cas, l'URL de la base de données comprend le nom d'utilisateur et le mot de passe et a la forme générale suivante -

jdbc:oracle:driver:username/[email protected]

Ainsi, la connexion ci-dessus peut être créée comme suit -

String URL = "jdbc:oracle:thin:username/[email protected]:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

Utilisation d'une URL de base de données et d'un objet de propriétés

Une troisième forme de la méthode DriverManager.getConnection () nécessite une URL de base de données et un objet Properties -

DriverManager.getConnection(String url, Properties info);

Un objet Properties contient un ensemble de paires mot-clé-valeur. Il est utilisé pour transmettre les propriétés du pilote au pilote lors d'un appel à la méthode getConnection ().

Pour établir la même connexion établie par les exemples précédents, utilisez le code suivant -

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);

Fermeture des connexions JDBC

À la fin de votre programme JDBC, il est nécessaire de fermer explicitement toutes les connexions à la base de données pour mettre fin à chaque session de base de données. Cependant, si vous oubliez, le garbage collector de Java fermera la connexion lorsqu'il nettoiera les objets périmés.

S'appuyer sur le garbage collection, en particulier dans la programmation de base de données, est une très mauvaise pratique de programmation. Vous devez prendre l'habitude de toujours fermer la connexion avec la méthode close () associée à l'objet de connexion.

Pour vous assurer qu'une connexion est fermée, vous pouvez fournir un bloc «enfin» dans votre code. Un bloc finally s'exécute toujours, qu'une exception se produise ou non.

Pour fermer la connexion ouverte ci-dessus, vous devez appeler la méthode close () comme suit -

conn.close();

La fermeture explicite d'une connexion préserve les ressources du SGBD, ce qui rendra votre administrateur de base de données heureux.

Pour une meilleure compréhension, nous vous suggérons d'étudier notre tutoriel JDBC - Sample Code .