Un exemple simple

Le pilote d’une base de données est tout simplement une classe Java instance de l’interface java.sql.Driver. Comme nous l’avons déjà vu, il est possible de charger une classe Java explicitement dans le code, par appel de la méthode Class.forName().

Chaque éditeur de base de données fournit une telle classe, généralement dans un JAR qui constitue le pilote complet. Le nom complet de cette classe varie donc d'un éditeur à l'autre. Pour chaque base, il faut donc trouver ce nom. Dans le cas de MySQL, il s'agit de com.mysql.jdbc.Driver. L'ouverture d'une connexion sur une base MySQL aura donc la forme suivant :

Ensuite ouverture de la connexion proprement dite :

Connection con = DriverManager.getConnection(chaineDeConnexion, user, password) ;

L’objet chaîneDeConnexion est de la classe String. C’est une concaténation des éléments suivants :

Ces différents éléments se concatènent en une chaîne unique qui a la forme suivante : jdbc:mysql://localhost:3306/db_test

Ces deux méthodes jettent bien sûr leurs propres exceptions, notamment si la classe du pilote n’est pas trouvée, si une erreur s’est glissée dans l’URL de connexion, si l’hôte est inaccessible, ou s’il se trouve une erreur dans les identifiants de connexion.

Pour pouvoir passer une requête à la base, il faut un objet de type Statement. Cet objet s’obtient en faisant appel à la méthode createStatement() de notre objet de type Connection.

Statement smt = con.createStatement() ;

On peut envoyer ensuite trois types de requêtes :

On récupère le résultat dans un objet de type ResultSet. Dans le cas d’une mise à jour de la base, ce qui correspond aux commandes SQL insert, update, create, drop, delete, on utilise la commande :

int i = smt.executeUpdate("insert into … values …") ;

L’entier de retour représente le nombre de lignes affectées dans le cas d’un insert, d’un update ou d’un delete.

Dans le cas d’une requête de sélection, un objet de type ResultSet est renvoyé.

ResultSet resultSet = smt.executeQuery("select nom, age from Marins") ;

L’objet resultSet contient les lignes renvoyées par la requête.

Enfin, pour parcourir ces lignes, il faut utiliser les méthodes de l’interface ResultSet. Voici un exemple.

while (rs.next()) {
   String nom = rs.getString("nom") ;
   int age = rs.getInt("age") ;
}

Les champs des lignes sélectionnées sont maintenant disponibles sous forme d’objets Java, ce qui était bien notre objectif.

Nous reverrons toutes ces méthodes et cette procédure en détails dans les paragraphes suivants.

Voici un exemple complet du code que nous venons de présenter très rapidement.

Après cette rapide présentation des choses, examinons chacun des points en détails.