|
5.0 Accéder
aux valeurs d'un Result Set
Nous allons
maintenant voir comment envoyer les requêtes écritent dans
la section précédante depuis un programme écrit en
Java, et comment accéder à ce résultat.
JDBC renvoie les résultats dans un objet ResultSet, donc, nous
avons besoin de déclarer une instance de la class ResultSet pour
contenir nos résultats. Le code qui suit déclare l'objet
ResultSet rs et lui assigne le résultat de notre requête
précédente :
ResultSet
rs = stmt.executeQuery(
"SELECT COF_NAME,PRICE FROM COFFEES");
5.1 Utiliser la
méthode next
La variable rs, qui
est une instance de ResultSet, contient les lignes de café et leurs
prix. Pour pouvoir accéder à leurs noms et à leurs
prix, nous irons dans chaque ligne et récupèrerons les valeurs
selon leur type. La méthode next déplace ce qui est appelé
curseur à la ligne suivante, et fait de cette ligne (appelée
la ligne courante) celle sur laquelle nous travaillons. Initialement,
ce curseur est positionné juste au dessus de la première
ligne d'un objet ResultSet, donc le premier appel à la méthode
next déplace le curseur à la première ligne et en
fait la ligne courante. L'invocation successive de la méthode next
déplace le curseur vers le bas, ligne par ligne. Notez qu'avec
l'API JDBC 2.0, couvert dans la prochaine section, vous pouvez déplacer
le curseur vers l'arrière, à une position spécifique,
et à une position relative à la ligne courante.
5.2
Utiliser la méthode getXXX
Nous utilisons la
méthode getXXX du type approprié pour accéder à
une valeur dans chaque colonne. Par exemple, la première colonne
de chaque ligne du result set est NOM_CAFE, qui contient une valeur de
type SQL VARCHAR. La méthode pour accéder à une valeur
de type VARCHAR est getString. La seconde colonne de chaque ligne contient
une valeur de type SQL FLOAT, et la méthode pour accéder
à ces valeurs est getFloat. Le code qui suit accède aux
valeurs contenues dans la ligne courante du result set et affiche la ligne
avec le nom suivit de trois espaces puis le prix. À chaque fois
que la méthode next est invoquée, la ligne suivante devient
la ligne courante, et la boucle continue jusqu'à ce qu'il n'y ai
plus de ligne dans le result set.
String
requete = "SELECT NOM_CAFE, PRIX FROM CAFE";
ResultSet rs = stmt.executeQuery(requete);
while(rs.next()){
String s = rs.getString("NOM_CAFE");
float n = rs.getFloat("PRIX");
System.out.println(s + " " + n);
Le programme affichera
ceci :
Colombian
7.99
French_Roast 8.99
Espresso 9.99
Colombian_Decaf 8.99
French_Roast_Decaf 9.99
Voyons maintenant
plus précisément comment la méthode getXXX fonctionne
en examinant les deux instructions getXXX dans ce code. Premièrement,
examinons getString.
String s = rs.getString("NOM_CAFE");
La méthode getString est invoquée sur l'objet ResultSet
rs, donc getString doit accéder aux valeurs contenues dans la colonne
NOM_CAFE de la ligne courante de rs. La valeur que getString rapporte
a été convertie du SQL VARCHAR, au String de Java, et a
été assignée à l'objet String s. Notez que
nous avons utilisé la variable s dans l'expression println ci-dessus.
La situation est la même avec la méthode getFloat, à
l'exception près, qu'il rapporte la valeur contenue dans la colonne
PRIX, qui est un FLOAT SQL, et la convertir en FLOAT de Java avant de
l'assigner à la variable n.
JDBC offre deux façons d'identifier une colonne dont une méthode
getXXX prendra la valeur. Une des façons est de donner le nom de
la colonne, comme dans l'exemple ci-dessus, et la seconde, est de donner
l'index de la colonne (numéro de la colonne), où 1 désigne
la première colonne, 2 la deuxième colonne et ainsi de suite.
Utiliser le numéro de la colonne à la place de son nom donne
le code suivant :
String s = rs.getString(1);
float n = rs.getFloat(2);
La première ligne de code prend la valeur de la première
colonne de la ligne courante de rs (colonne NOM_CAFE), la convertie en
String Java, et l'assigne à s. La deuxième ligne de code,
prend la valeur contenue dans la deuxième colonne de la ligne courante
de rs, la convertie en float Java, et l'assigne à n. Notez que
le nombre de la colonne réfère au numéro de la colonne
dans le result set, pas dans la table originale.
En résumé, JDBC vous autorise à utiliser le nom
de la colonne ou son numéro comme argument dans une méthode
getXXX. Utiliser le numéro de colonne est un peu plus pratique,
mais dans certains cas, le nom de la colonne est requis. En général,
fournir le nom de la colonne est essentiellement équivalent à
fournir son numéro.
Grâce à la méthode getXXX de JDBC, vous pourrez alors
accéder aux différents types de données SQL. Par
exemple, la méthode getInt peut être utilisée pour
accéder aux types numériques, ou caractères. Mais
il est recommandé de n'utiliser getInt que pour accéder
à des données SQL de type INTEGER. Il ne peut pas être
utilisé pour rapporter des données de type BINARY, VARBINARY,
LONGVARBINARY, DATE, TIME ou TIMESTAMP.
À cette adresse, vous trouverez les méthodes getXXX, et
leurs conseils d'utilisation :
http://java.sun.com/docs/books/tutorial/jdbc/basics/_retrievingTable.html
Précédent
Suivant
|