Partie III
Langages et outils
320
© Éditions Eyrolles
La trace de l’appel de cette procédure est la suivante :
Compagnie de F-GLFS : Transport Air Tour
Pensez, sous root, à donner les privilèges nécessaires à l’utilisateur qui va lancer le sous-programme via Java (pour mon test, j’ai dû lancer GRANT EXECUTE ON bdsoutou.* TO 'soutou'@'localhost' et GRANT SELECT ON mysql.proc TO 'soutou'@'localhost'). Si
vous ne le faites pas, JDBC vous rappellera clairement à l’ordre.
Transactions
JDBC supporte le mode transactionnel qui consiste à valider tout ou une partie d’un ensemble
d’instructions. Nous avons déjà décrit, à la section Interface Connection, les méthodes qui
permettent à un programme Java de coder des transactions (setAutoCommit, commit et
rollback).
Par défaut, chaque instruction SQL est validée (on parle d’autocommit). Lorsque ce mode est
désactivé, il faut gérer manuellement les transactions avec commit ou rollback.
Quand le mode autocommit est désactivé :
• La déconnexion d’un objet Connection (par la méthode close) valide implicitement la
transaction (même si commit n’a pas été invoqué avant la déconnexion).
• Chaque instruction du LDD (CREATE, ALTER, DROP) valide implicitement la transaction.
Tableau 8-40 Appel d’une procédure (paramètre en entrée et sortie)
Code Java
Commentaires
String
CallableStatement étatAppelable =
Création d’un état appelable.
Déclaration du paramètre de sortie.
Passage du paramètre d’entrée.
Exécution de la procédure.
System.out.print("Compagnie de F-GLFS : "+
Extraction du résultat.
Fermeture de l’état.
} catch(SQLException ex) { … }
Gestion des erreurs.
Web
ordreSQL =
"{call bdsoutou.leNomCompagnieEst(?,?)}";
cx.prepareCall(ordreSQL);
étatAppelable.registerOutParameter
(2,java.sql.Types.VARCHAR);
étatAppelable.setString(1,"F-GLFS");
étatAppelable.execute();
étatAppelable.getString(2));
étatAppelable.close();
Langages et outils
320
© Éditions Eyrolles
La trace de l’appel de cette procédure est la suivante :
Compagnie de F-GLFS : Transport Air Tour
Pensez, sous root, à donner les privilèges nécessaires à l’utilisateur qui va lancer le sous-programme via Java (pour mon test, j’ai dû lancer GRANT EXECUTE ON bdsoutou.* TO 'soutou'@'localhost' et GRANT SELECT ON mysql.proc TO 'soutou'@'localhost'). Si
vous ne le faites pas, JDBC vous rappellera clairement à l’ordre.
Transactions
JDBC supporte le mode transactionnel qui consiste à valider tout ou une partie d’un ensemble
d’instructions. Nous avons déjà décrit, à la section Interface Connection, les méthodes qui
permettent à un programme Java de coder des transactions (setAutoCommit, commit et
rollback).
Par défaut, chaque instruction SQL est validée (on parle d’autocommit). Lorsque ce mode est
désactivé, il faut gérer manuellement les transactions avec commit ou rollback.
Quand le mode autocommit est désactivé :
• La déconnexion d’un objet Connection (par la méthode close) valide implicitement la
transaction (même si commit n’a pas été invoqué avant la déconnexion).
• Chaque instruction du LDD (CREATE, ALTER, DROP) valide implicitement la transaction.
Tableau 8-40 Appel d’une procédure (paramètre en entrée et sortie)
Code Java
Commentaires
String
CallableStatement étatAppelable =
Création d’un état appelable.
Déclaration du paramètre de sortie.
Passage du paramètre d’entrée.
Exécution de la procédure.
System.out.print("Compagnie de F-GLFS : "+
Extraction du résultat.
Fermeture de l’état.
} catch(SQLException ex) { … }
Gestion des erreurs.
Web
ordreSQL =
"{call bdsoutou.leNomCompagnieEst(?,?)}";
cx.prepareCall(ordreSQL);
étatAppelable.registerOutParameter
(2,java.sql.Types.VARCHAR);
étatAppelable.setString(1,"F-GLFS");
étatAppelable.execute();
étatAppelable.getString(2));
étatAppelable.close();
