Bonjour à tous,
Je bosse avec Java 5.0 et Oracle 8.1.7 (driver jdbc : thin) et voici mon problème :
Dans mon appli, j'ai un panel avec un "requêteur SQL". Entendez par là que c'est un JTextArea et que quand on clique sur un bouton exécuter, ça lance la requête et affiche les éventuels résultats dans une JTable.
Le problème c'est que quand je lance une requête et que je change de panel, une nouvelle requête est exécutée alors que la 1ère est encore en cours, et ça plante. Chaque requête est exécutée dans un nouveau thread.
Explications :
Dans les 2 panels où les requêtes sont exécutées, je lance la requête par la méthode suivante, Database.executeQuery( String query ) :
stmt est un objet Statement, variable de la classe Database. Le " synchronized (stmt) " ne devrait il pas mettre en attente les autres threads ?
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 public ResultSet executeQuery( String sql ) { synchronized (stmt) { // Exécution de la requête ResultSet rs = null ; try { rs = stmt.executeQuery(sql) ; } catch (SQLException e) { return null ; } return rs ; } }
Merci pour votre aide, je débute en JDBC et multi threading. On n'apprend que les bases en cours, pas les techniques de programmations... j'ai donc sûrement beaucoup de mauvaises habitudes !
Partager