© Éditions Eyrolles
311
chapitre n° 8
Utilisation avec Java
donc passée à NULL au niveau de la table, en l’absence de valeur par défaut définie dans la
colonne.
Gestion des séquences
Avant la version 3.0 de l’API JDBC de Sun, il n’y avait pas de possibilité « standard »
d’extraire la valeur courante d’une séquence (colonne AUTO_INCREMENT). Avec des anciens
pilotes JDBC pour MySQL, il était possible d’utiliser une méthode spécifique de l’interface
Statement, ou d’exécuter une requête du type SELECT LAST_INSERT_ID() après avoir
inséré un enregistrement. Le premier mécanisme n’assure pas la portabilité, le second n’est
pas efficace, puisqu’il oblige à insérer une ligne au préalable (qu’on peut toutefois annuler
avec un rollback).
À présent, JDBC 3.0 offre deux nouveaux mécanismes afin d’extraire la valeur courante d’une
séquence AUTO_INCREMENT : la méthode getGeneratedKeys() ou l’exploitation d’un
curseur modifiable via la méthode insertRow().
Dans tous les cas, il n’est pas nécessaire d’insérer réellement un nouvel enregistrement (annulation possible par rollback). En revanche, l’exécution de l’ajout (par INSERT) est obligatoire
pour que MySQL évalue une nouvelle valeur de la séquence. Cette action est irréversible dans
le sens où la séquence sera incrémentée qu’on valide ou non l’ajout de l’enregistrement.
Tableau 8-27 Insertion d’un enregistrement
Code Java
Commentaires
try {…
);
;
Création de l’état et
désactivation de la validation automatique.
ResultSet curseurModifJava = etatSimple.executeQuery
("SELECT immat,typeAvion,cap FROM Avion");
Création du curseur.
;
;
;
;
;
cx.commit();
Première étape.
Deuxième étape.
Troisième étape.
curseurModifJava.close();
Validation.
Fermeture du curseur.
} catch(SQLException ex) { … }
Gestion des erreurs.
Web
Statement etatSimple =
cx.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE
cx.setAutoCommit(false)
curseurModifJava.moveToInsertRow()
curseurModifJava.updateString(1,"F-LUTE")
curseurModifJava.updateString(2,"TB20")
curseurModifJava.updateInt(3,4)
curseurModifJava.insertRow()
Précédent

- 333/418

Suivant