Dans ton code tu fais conn.getConnection().
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 public static float esth_montantProduits(Date date){ float montant = -1; // Récupère la connexion au DataSource Connexion conn = new Connexion(); PreparedStatement pstmt=null; ResultSet rs=null; try { if (date==null){ Calendar cal = Calendar.getInstance(); date = new Date(cal.getTimeInMillis()); } pstmt = conn.getConn().prepareStatement("SELECT total_produits FROM esth_livre_caisse WHERE date_debut=?;"); pstmt.setDate(1, date); rs = pstmt.executeQuery(); if(rs.next()){ montant = rs.getFloat("total_produits"); } rs.close(); pstmt.close(); } catch(SQLException sqle){ //TODO voir si on voit le message System.err.println(sqle.getMessage()); } finally{ try{ conn.close(); } catch(SQLException sqle){} conn=null; } return montant; }//fin esth_montantProduitsEnCours
Il faut que tu gardes la référence sur cette connection pour pouvoir la fermer sinon le ds.getConnection() te renvoie une autre source (un autre objet).
Pour ta classe connexion il faut donc :
Comme cela çà devrait fonctionner.
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 package be.cityform.administration.sql; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class Connexion { /** La référence au DataSource */ private static DataSource ds = null; private Connection conn = null; /** * Initialise la connexion au DataSource */ public void static init() { try { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); ds = (DataSource) envContext.lookup("jdbc/postgres"); } catch (Exception e) { e.printStackTrace(); } }//fin init /** * Retourne la session de connexion * * @return Connection * @throws SQLException */ public Connection getConn() throws SQLException { conn = ds.getConnection(); return conn; }//fin getConn public void close () throws SQLException { conn.close(); }//fin close }//fin Connexion
Mais attention à n'appeler qu'une seule fois la méthode init.
Voilà !
Partager