TUTORIELS 
Introduction à JDBC
JDBC permet de transmettre des instructions SQL via Java. Présentation, pas à pas, des principaux objets et méthodes de l'API.  (12 septembre 2001)
 

JDB est une API Java permettant la communication avec des systèmes de gestion de bases de données: l'installer ne pose pas de difficultés particulières (JDBC est fournit avec le JDK). Aussi nous allons nous concentrer dans cet article sur l'utilisation de JDBC pour se connecter à un SGBD et lui envoyer du code SQL.

La première chose à faire est de charger les pilotes nécessaires à la connexion. Par exemple, si l'on veut se connecter via ODBC, on utilisera le pilote (driver) JDBC-ODBC Bridge (pour tout autre pilote, se reporter à la documentation de celui-ci):

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

La connexion proprement dite se fera au moyen de l'instruction suivante, en spécifiant une URL, un identifiant et un mot de passe:

Connection connexion = DriverManager.getConnection(url,login,password);

Nous allons maintenant pouvoir transmettre des instructions SQL. Pour cela, nous allons utiliser des objets Statement:

Statement stmt = connexion.createStatement();

Notre variable stmt dispose d'une méthode, executeUpdate, utilisée pour exécuter les instructions SQL qui mettent à jour une table (et, en particulier, pour exécuter une instruction SQL CREATE TABLE ... afin de créer une table. Si nous voulons que notre base contienne, par exemple, les données suivantes (nous reprenons un exemple déjà utilisé dans d'autres tutoriels):

Alors nous écrirons en JDBC:

stmt.executeUpdate("CREATE TABLE donnees ( id int(2) DEFAULT '0' NOT NULL, mois tinytext NOT NULL, annee int(4) DEFAULT '0' NOT NULL, valeur int(3) DEFAULT '0' NOT NULL ) ");

stmt.executeUpdate("
INSERT INTO donnees VALUES ( '1', 'Jan', '2000', '24')"); stmt.executeUpdate("INSERT INTO donnees VALUES ( '2', 'Jan', '2001', '36')");

etc...

Requêtes
Si nous souhaitons récupérer le résultat d'une requête, nous utiliserons l'objet ResultSet et la méthode executeQuery de l'objet Statement:

ResultSet rs = stmt.executeQuery( " SELECT mois,valeur FROM donnees WHERE annee='2001' ");

Il nous faut maintenant exploiter plus précisément le "paquet de données" que nous a renvoyé notre requête SQL:

while(rs.next()) {
  String m = rs.getString("mois");
  int v = rs.getInt("valeur");
  System.out.println(m + " " + v);
}


Nous exploitons ici la méthode next de notre objet ResultSet et les méthodes getXXX (suivant le type de données, ici String et Int).

Ce qui précède constitue les bases élémentaires de JDBC. De futurs articles se pencheront sur des requêtes plus complexes, les procédures stockées et les transactions.

 
[ Jérôme MorlonJDNet
 
Accueil | Haut de page