Bonjour,

Voilà j'ai un problème. J'utilise jdbc pour pour connecter mon programme à ma base de donnée. Si jamais je perds la connection à ma base de donnée j'ai une fonction dans une classe java qui m'affiche un message d'erreur dans une pop-up.
Le problème c'est que lorsque je fais des requete dans mes classe javafx, s'il ya une perte de connection à la base, la fenêtre pop-up va s'afficher pour chacune de mes requetes. En gros l'execution va se poursuivre. Or, je voudrais que cette erreur se repercute dans les try ou catch que j'utilise dans mes classe javaFX.

Ma fonction qui indique la perte de connection:
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
 
public void connection( String login, String mdp )
    {
        /** Verification si le pilote est installé */
        try{
 
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(Exception E)
        {
            System.err.println("Il n'y a pas de pilote");
        }
 
        /** Connexion à la base de donnée */
        try
        {
 
            String url = "jdbc:mysql://localhost/lsis";
            connect = DriverManager.getConnection(url, login, mdp);
 
        }
        catch(SQLException E)
        {
            System.err.println(E.getMessage());
            Alert.inform(E.getMessage()+"\n\nPerte de la connection à la base de donnée.\nVeuillez réassayer plus tard.");
        }
 
    }
Un exemple de fonction d'une de mes classes javaFx ou je lance des requetes:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
function bouton_connectAction(): Void {
 
        var mdp_crypt: String;
        var res:ResultSet;
        var Results:String = "";
        var nom_u:String = "";
        var mdp_u:String = "";
 
        /** création d'instances de mes classes java */
        def crypt : GenerationMdp = new GenerationMdp();
        def u_nom : Sessions = new Sessions();
 
        /** Récupération des valeur du textboxt mot de passe et nom
         * .trim() afin de ne pas prendre en compte les espaces en fin de chaine
         * de caractères
         */
        var mdp:String = bind mdp_text.text;
        var nom:String = bind nom_text.text.trim();
 
        /**
         * cryptage du mot de passe
         * afin de pouvoir faire la comparaison avec celui crypté dan sla base de donnée
         */
        mdp_crypt= crypt.Cryptage(mdp);
 
        /**
         * Création de ma requete
         * On cherche si le nom et le mot de passe sont bien inscrit dans la base de donnée
         */
        var marequete:String = "SELECT id_utilisateur, motDePasse FROM utilisateur WHERE id_utilisateur LIKE '{nom}' AND motDePasse LIKE '{mdp_crypt}'";
 
        try
        {
             /** Envoi de la requete de sélection */
             res = resultat.Result_requete_selection(marequete);
             if(res.first())                    // on se positionne sur le 1er enregistrement
             {
                 nom_u = res.getString(1);
                 mdp_u = res.getString(2);
             }
             /**
              * Si le mot de passe et le login sont correct
              * affichage du menu sinon
              * affichage d'un message d'erreur
              */
             if("{nom_u} {mdp_u}" != "{nom} {mdp_crypt}")
             {
                Alert.inform("Votre nom d'utilisateur et/ou votre mot de passe sont incorect.\nVeuillez les retaper.");
             }
             else
             {
 
                /** enregistre l'identifiant de l'utilisateur courant dans la classe Sessions */
                u_nom.setNom(nom);
 
                /** Recuperation des droits de l'utilisateur courant */
                marequete= "SELECT droit_profil FROM profil_utilisateur P INNER JOIN utilisateur U ON P.id_profil = U.id_profil WHERE id_utilisateur LIKE '{nom}'";
                res = resultat.Result_requete_selection(marequete);
                if(res.first())
                {
                    Results = res.getString(1);
                }
 
                u_nom.setProfil(Results);
 
                /** Recuperation de la date de la dernière connexion et envoi de ces infos à la classe "Sessions" */
                marequete= "SELECT DATE_FORMAT(date_connection, GET_FORMAT(TIMESTAMP,'ISO')) FROM utilisateur WHERE id_utilisateur LIKE '{nom}'";
                res = resultat.Result_requete_selection(marequete);
                if(res.first())
                {
                    Results = res.getString(1);
                }
                u_nom.setDate(Results);
 
                /** envoie dans la base de données de la nouvelle date et heure de connection */
                marequete = "UPDATE utilisateur set date_connection = NOW() WHERE id_utilisateur LIKE '{nom}'";
                resultat.Result_requete_insertion(marequete);
 
 
               /** ouverture de la fenêtre de Menu */
                var design = Menus{};
                design.affichageMenu();
 
               /** fermeture de la fenêtre de connexion */
                scene.stage.close();
 
            }
 
        }
        catch (Exception)
        {
            System.err.println(Exception.getMessage());
        }
 
     }
Pourriez-vous m'aider?

Merci d'avance