| 6.0
Mettre les tables à jours
Supposons qu'après
la première semaine, le propriétaire du The Coffee Break
veuille mettre à jours la colonne VENTES de la table CAFE en entrant
le nombre de livres vendues pour chaque type de café. L'instruction
SQL pour mettre à jour est la suivante :
String updateString = "UPDATE
CAFE" +
"SET VENTES = 75" +
"WHERE NOM_CAFE LIKE 'Colombian'";
Utilisant l'instruction
stmt, le code JDBC exécute l'instruction SQL contenue dans updateString
:
stmt.executeUpdate(updateString);
La table COFFES doit
maintenant ressembler à ça :
| NOM_CAFE |
FO_ID |
PRIX |
VENTES |
TOTAL |
| Colombian |
101 |
7.99 |
75 |
0 |
| French_Roast |
49 |
8.99 |
0 |
0 |
| Espresso |
150 |
9.99 |
0 |
0 |
| Colombian_Decaf |
101 |
8.99 |
0 |
0 |
| French_Roast_Decaf |
49 |
9.99 |
0 |
0 |
Notez que nous n'avons
pas encore mis à jour la colonne TOTAL, sa valeur est toujours
0.
Maintenant, sélectionnons
la ligne mise à jour, rapportons la valeur dans les colonnes de
NOM_CAFE et de VENTES, et affichons ces valeurs :
String
requete = "SELECT NOM_CAFE, VENTES FROM CAFE" +
"WHERE NOM_CAFE LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(requete);
while(rs.next()){
String s = rs.getString("NOM_CAFE");
int n = rs.getInt("VENTES");
System.out.println(n + " livres de" + s + " vendu cette
semaine.");
Ça affichera
:
75 livres de Colombian
vendu cette semaine
La clause WHERE limite
la sélection à une seule ligne, il n'y avait qu'une seule
ligne dans le result set rs, et donc une seule ligne a été
affichée. Dans ce cas, il est possible d'écrire le code
sans la boucle while :
rs.next();
String s = rs.getString(1);
int n = rs.getInt(2);
System.out.println(n + " livres de " + s + " vendu
cette semaine.");
Même si il n'y
a qu'un seul résultat dans le result set, vous devez utiliser la
méthode next pour y accéder. Un objet ResultSet est créé
avec un curseur pointant au dessus de la première ligne. Le premier
appel de la méthode next positionne le curseur sur la première
(et dans ce cas, la seule) ligne de rs. Dans ce code, next est appelé
juste une fois, donc si il y avait eu une autre ligne, elle n'aurait jamais
pu être accédée.
Maintenant mettons
à jour la colonne TOTAL en ajoutant le montant hebdomadaire au
total existant, et affichons le nombre de livres vendues à ce jour
:
String
updateString = "UPDATE CAFE" +
"SET TOTAL = TOTAL + 75 " +
"WHERE NOM_CAFE LIKE 'Colombian'";
stmt.executeUpdate(updateString);
String query = "SELECT NOM_CAFE, TOTAL FROM CAFE" +
"WHERE NOM_CAFE LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
String
s = rs.getString(1);
int n = rs.getInt(2);
System.out.println(n+" livres de" + s + " vendu jusqu'à
maintenant.");
}
Notez que dans cet
exemple, nous utilisons l'index de la colonne plutôt que son nom,
fournissons l'index 1 à getString (la première colonne du result
set est NOM_CAFE), et l'index 2 à getInt (la seconde colonne du
result set est TOTAL). Il est important de faire la distinction entre
l'index d'une colonne dans la table de la base de données comme
opposée à l'index dans le result set. Par exemple, TOTAL
est la cinquième colonne dans la table CAFE mais c'est la seconde
colonne dans le résultat généré par la requête
dans l'exemple ci-dessus.
.
Précédent
Suivant
|