Bonjour à tous,
je suis actuellement occupé à écrire un programme devant effectuer des requêtes SQL dans une db Oracle.
J'aimerai pouvoir, via une interface graphique, annuler une requête lorsque celle-ci prend trop de temps. Pour celà, la requête s'effectue dans un thread et un bouton d'annulation a été prévu avec le code suivant pour annuler la requête :
Mon problème est que l'annulation bloque au niveau de la méthode statement.close(). Aucune erreur n'est généré, le programme se bloque sans raison apparente, figeant ainsi l'interface graphique.
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 try { if(statement!= null) { statement.cancel(); statement.close(); } threadRecherche.stop(); } catch (SQLException e) { System.out.println("SQLException "+e.getMessage()); } catch(Exception e) { System.out.println("Exception "+e.getMessage()); }
Est-ce que mon principe pour annuler une requête en cours est correct? Pourquoi l'instruction close est-elle bloquante?
Je vous remercie d'avance
Partager