Non seulement on peut rendre les objets de ResultSet défilables dans JDBC 2.0, mais on peut aussi les rendre actualisables. Dès que l'on a atteint un ResultSet, de nombreuses nouvelles fonctions permettent d'actualiser ou de mettre à jour une ligne. L'exemple de la figure 3 crée une table et ajoute
Des ResultSets actualisables

des données. Il crée
ensuite un ResultSet et met à jour les valeurs dans la colonne COL1 en ajoutant
1 à chaque valeur et modifie les valeurs dans la colonne COL2 en leur donnant
la valeur en cours plus le suffixe » said « .
On notera également les nouvelles méthodes updateInt et updateString. Il existe
des méthodes updateXxx correspondantes pour toutes les méthodes getXxx. Le premier
paramètre de la méthode updateInt(int, int), par exemple, est l’index de colonne.
Comme la méthode getInt(int), l’index de colonne est par défaut 1. Le second paramètre
est la nouvelle valeur. Il y a aussi les méthodes getXxx (chaîne) et updateXxx
(chaîne, type) qui utilisent un nom de colonne comme premier argument.
De plus, la méthode updateRow est appelée après que les modifications ont été
effectuées. Il est important de comprendre que updateInt, updateString et toutes
les autres méthodes ne modifient pas le contenu de la base de données. Elles modifient
simplement une mémoire-tampon qui représente la ligne. Ce n’est qu’au moment où
updateRow est appelé que la ligne est modifiée dans la base de données.
On peut appeler les méthodes cancelRowUpdates ou refreshRow pour effacer les modifications
proposées dans la mémoire-tampon. On peut obtenir la même chose en allant simplement
sur une nouvelle ligne. Quand on quitte la ligne courante, les éventuelles valeurs
updateXxx pour lesquelles updateRow n’a pas été appelé, sont perdues. Il existe
aussi la méthode deleteRow qui supprime la ligne courante de la base de données
et du ResultSet.
En plus d’une mémoire-tampon pour les mises à jour des lignes, il en existe une
pour les insertions de lignes. Pendant qu’on travaille avec un objet ResultSet,
on peut aller sur cette ligne insert, définir les valeurs souhaitées et insérer
la ligne dans la base de données. L’exemple de code suivant montre comment procéder
:
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(
« SELECT * FROM TABLEX »);
rs.moveToInsertRow();
rs.updateInt(1, 0);
rs.updateString(2, « CUJO »);
rs.insertRow();
Téléchargez cette ressource

Une DSI « broker de services » ? Recettes de Scale-ups à l’usage des grandes entreprises
Découvrez dans ce carnet d’expériences les conseils et bonnes pratiques de DSI et CTO d'organisations qui ont mené et mènent leur transformation pour devenir des brokers de services accomplis. Choix technologiques et organisationnels, types de services apportés, vitesse du changement, rapport aux métiers… ils détaillent la nature et les potentiels écueils de cette métamorphose.