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.
|