Bonjour,
Je dispose d'un objet User. Cet objet contiens deux méthodes que je souhaite utiliser ensemble.
La première est getNbUser, elle permet de recupérer le nombre d'éléments associés en base.
La seconde est insertUser, elle permet d'insérer un utlisateur en base.
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 public static int getNbUser(){ Connection cnx = Connexion.getCnx(); String rqt= "select count (*) from user"; int nbUser = 0; try { Statement stmt = cnx.createStatement(); ResultSet rs= stmt.executeQuery(rqt); // execute(rqt); while(rs.next()) { nbUser = rs.getInt(1); System.out.print("NbUser = "+ nbUser); } } catch (SQLException e) { e.printStackTrace(); }finally{ Connexion.closeCnx(cnx); } return nbUser; }
Utiliser indépendemment, les deux sont fonctionnelles, néanmoins, lorsque je souhaite insérer un User dans la table correspondante en incrémentant l'id (champs INT(8) ), le fait d'utiliser les deux méthodes en les croisant me poses problèmes.
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 public void insertUser(){ Connection c = Connexion.getCnx(); try { Statement stmt =c.createStatement(); //final int new_id = getNbUser()+1; stmt.execute("INSERT INTO USER (id,login, password, droit) VALUES (" +this.getId() /*User.getNbUser()*/ +",'" +this.getLogin() +"','" +this.getPassword() +"','" +this.getDroit() +"')"); } catch (SQLException e) { e.printStackTrace(); }finally{ Connexion.closeCnx(c); } }
Ci dessous l'erreur générée :
Une solutioncom.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
at com.mysql.jdbc.Connection.checkClosed(Connection.java:1931)
at com.mysql.jdbc.Connection.createStatement(Connection.java:3093)
at com.mysql.jdbc.Connection.createStatement(Connection.java:3075)
at bean.User.insertUser(User.java:75)
at main.Main.main(Main.java:21)
Merci
Partager