Bonjour,
Voila dans le cadre de mon stage, je dois développer une application intranet basée sur J2EE (une CVthèque).
L'architecture est la suivante:
Conteneur Web: Tomcat 5.0.28 pour les JSP/servlet
Base de données: SQL serveur 2005 Express Edition.
Pour faire le pont entre les deux: Drivers JDBC
J'aimerais connaitre la maniere la plus propre pour gerer mes Formulaire/traitements/connection/Gestion des exceptions?
Pour l'instant j'ai une classe qui permet la connection a ma bd grace au drivers JDBC:
Pour la connection, j'ai vu le tutorial sur le pooling de connection (http://java.developpez.com/faq/j2ee/...TION_CONNEXION), mais j'ai vu seulement des exemple pour l'utiliser dans l'init d'une server.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 ---------------------------------------------------------- package donnees; import java.sql.*; public class SessionSQLServer { private Connection conn; private ResultSet rst; private String url = "jdbc:sqlserver://PORTABLE:1433;databaseName=TEST;user=sa;password=sa"; //Permet d'ouvrir une connection sur la base de données private void ouvrirConnection() throws SQLException { DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); conn = DriverManager.getConnection(url); conn.setAutoCommit(true); } //Permet de fermer la connection vers la base de données private void fermerConnection() throws SQLException {conn.close();} public void addprofil() throws SQLException { ouvrirConnection(); Statement stmt = conn.createStatement(); stmt.executeUpdate("INSERT INTO PROFIL_PRO (PRO_LIB) VALUES ('tutu')"); stmt.close(); fermerConnection(); } } ----------------------------------------------------------
Les connections et requetes se fesant dans ma classe SessionSQLServer, puis je tout de meme utiliser la methode de pooling?
Aprés je pense utiliser des procedures stockée dans ma bd. Cela vous parrait il un bon choix?
Si j'utilise cette methode, j'aimerais faire la gestion des erreurs.
En cours et en TP nous avons travaillé sur oracle.
J'aimerais avoir ce type de traitements en jouant avec les codes relevée par SQL server:
Seulement je trouve très peu de chose sur les codes exception SQL server et sur les transactions, commit et rollback...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ----------------------- -- Creer un Adherent -- ----------------------- PROCEDURE creer_un_adherent(num_adh number, nom_adh varchar2, prenom_adh varchar2, rue_adh varchar2, addr_adh varchar2, cp_adh varchar2, ville_adh varchar2) IS BEGIN set transaction read write; INSERT INTO ADHERENT_ADH VALUES(num_adh, nom_adh, prenom_adh, rue_adh, addr_adh, cp_adh, ville_adh); COMMIT; exception when others then if sqlcode = -00001 then /* viol des contraintes uniques */ rollback; raise_application_error(-20002, 'L''adhérent '||num_adh||' existe déjà'); elsif sqlcode = -00060 then /* problème d'interblocage */ rollback; raise_application_error(-20099, 'Opération impossible pour cause d''interblocage'); else /* erreur inattendue */ rollback; message := 'sqlcode :'||sqlcode||' '||substr(sqlerrm,1,100); raise_application_error(-20100, 'Erreur inattendue : '||message); end if; END;
Cela vous parait il une bonne solution??
Pour gerer les erreur pour l'instant, j'ai créer uen page jsp error.jsp avec le tag <%@ page isErrorPage="true" %> qui me permet de relever les erreurs courrantes.
Grace au throws SQLException dans ma classe de connection, je peux remonter les erreurs.
Mais j'aimerais savoir comment bien traiter ces erreurs pour mon interface.
Exemple avec un simple formulaire d'insertion d'un adherent dans une table:
Lorsque l'utilisateur clique sur valider, dois-je rappeller la meme page avec un test qui effectue le traitement entouré d'un try/catch et qui affiche une fenetre modal javascript avec le message d'erreur, ou dois-je appellé une servlet qui redirige vers une page d'erreur ou autre chose??
Enfin je ne sais pas quoi trop faire de se coté pour que cela soit propre et bien pour l'utilisateur (lui réafficherla page avec les champs ou autres)
Si quelqu'un pouvais m'eclairer, ce serais très sympa.
Merci
Partager