ahaa!! moi j'ai fait comme dans la javasoc, j'ai mis le commit dans la méthode insert pas dans l'appel, comme ça serai mieux pour moi, espérons que ça va sauvegarder
ahaa!! moi j'ai fait comme dans la javasoc, j'ai mis le commit dans la méthode insert pas dans l'appel, comme ça serai mieux pour moi, espérons que ça va sauvegarder
j'ai effacé les catch et modifié le code
mais maintenant même les fonctions du père et mère ne fonctionnent plus et je n'ai aucune exception, vraiment je me désespère avec ce maudit code, s'il me donne une exception au moins je saurais chercher
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 btnSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { cnx.setAutoCommit(false); insertBloc(); int mere = insertMere(); int pere = insertPere(); insertPhoto(); insertEtudiant(); insertFils(pere, mere); cnx.commit(); } catch (Exception e2) { try { cnx.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e2.getStackTrace(); } finally { try { cnx.setAutoCommit(true); } catch (SQLException e1) { e1.printStackTrace(); } } } });
ça, tu n'en seras sûre que quand tu les afficheras : e2.getStackTrace(); n'affiche rien. C'est e2.printStackTrace(); ! Et ça affiche dans la sortie standard d'erreurs (System.err) (donc la console, ou possiblement un fichier si tu as redirigé la sortie standard... tu testes avec quoi ?)
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
il n'affiche vraiment rien et ce depuis deux jours seulement, avant la console fonctionnait
je teste juste en regardant ma base de données, si les infos sont bien stockées ou pas puisque la console ne fonctionne pas
Mais e2.getStackTrace(); n'affichera jamais rien !
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
j'ai eu tout ça en console:
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 java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:740) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:784) at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2460) at brsClasses.TabbedPane.insertMere(TabbedPane.java:337) at brsClasses.TabbedPane$9.actionPerformed(TabbedPane.java:872) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Donc, tu as toujours cette erreur que tu avais déjà : la récupération du résultat après l'avoir fermé. C'est quoi le code actuel de insertMere()...(on voit que c'est dans insertMere dans la trace :at brsClasses.TabbedPane.insertMere(TabbedPane.java:337) !)
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
je croix que je commence à me perdre
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 @SuppressWarnings("finally") public int insertMere() throws Exception { try { int codeProfM = getProfM(); String query = "INSERT INTO mere (nom_mere , revenu_mere,code_prof) VALUES (?,?,?)"; stat = cnx.prepareStatement(query); stat.setString(1, txtMere.getText()); stat.setString(2, txtRevM.getText()); stat.setInt(3, codeProfM); stat.executeUpdate(); stat.close(); String codeQuery = "SELECT MAX(code_m) FROM mere"; stat = cnx.prepareStatement(codeQuery); rslt = stat.executeQuery(); rslt.next(); stat.execute(); stat.close(); } finally { return rslt.getInt(1); } }
Si tu avais fait ce qu'on avait dit : je vois encore stat et rstl déclarés en attributs de classe, le getInt() dans le finally !
Ce qui devrait s'écrire proprement :
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 public int insertMere() throws Exception { int codeProfM = getProfM(); String query = "INSERT INTO mere (nom_mere , revenu_mere,code_prof) VALUES (?,?,?)"; stat = cnx.prepareStatement(query); stat.setString(1, txtMere.getText()); stat.setString(2, txtRevM.getText()); stat.setInt(3, codeProfM); stat.executeUpdate(); stat.close(); String codeQuery = "SELECT MAX(code_m) FROM mere"; stat = cnx.prepareStatement(codeQuery); rslt = stat.executeQuery(); rslt.next(); // stat.execute(); // ça je t'avais déjà dit de l'enlever int resultat = rslt.getInt(1); // on récupère le résultat !!! stat.close(); // on ferme return resultat; }
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 public int insertMere() throws SQLException { int codeProfM = getProfM(); String query = "INSERT INTO mere (nom_mere , revenu_mere,code_prof) VALUES (?,?,?)"; try(PreparedStatement stat = cnx.prepareStatement(query) ) { stat.setString(1, txtMere.getText()); stat.setString(2, txtRevM.getText()); stat.setInt(3, codeProfM); stat.executeUpdate(); } String codeQuery = "SELECT MAX(code_m) FROM mere"; try(PreparedStatement stat = cnx.prepareStatement(codeQuery) ) { ResultSet rslt = stat.executeQuery(); rslt.next(); return rslt.getInt(1); // on récupère le résultat !!! } }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
j'ai eu une exception pointant sur ça:
c'est la première fois que je travaille avec dateChooser j'ai pris ce code d'une vidéo de tuto
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 stat.setString(29, ((JTextField) dateChooser.getDateEditor() .getUiComponent()).getText());
Il y a en plusieurs des datechoosers déjà, donc là, je peux pas si c'est la bonne manière de faire ou pas (à part que ça me semble bien tordue comme manière de faire : normalement, on devrait avoir un getDate(), ou quelque chose comme ça).
Mais, le plus important, c'est quoi l'exception ?
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
pour le date schooser je vais mettre à la place un mask car c'est une date de naissance, le date schooser aide plutot pour les date courante.
voilà l'exception:
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 java.lang.NullPointerException at brsClasses.TabbedPane.insertEtudiant(TabbedPane.java:418) at brsClasses.TabbedPane$9.actionPerformed(TabbedPane.java:875) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Oui, un JFormattedTexfField, voire, plus simple pour saisir, un JSpinner avec SpinnerDateModel.
Pour l'exception, il y a une référence null dans la ligne. Pas évident pour moi de savoir laquelle. Soit c'est dateChooser, parce que ce n'est pas la bonne variable que tu utilises. Soit c'est le dateEditor, ou l'UIComponent, pour je ne sais quelle raison attachée au fonctionnement et l'usage du JDateChooser lui-même...
Soit tu utilises le débogueur, soit tu traces (en affichant chaque référence, dans l'ordre de la plus haute, à la plus basse, en mettant des conditions pour pas causer une NullPointerException), ou tu affiche la référence la plus haute, tu testes, tu affiches la suivante, tu testes, et ainsi de suite jusqu'à celle qui est nulle.
Mais si tu changes de composants, c'est encore plus simple. Par contre, si c'est une date ce champ, pourquoi utiliser la méthode setString() ? Tu stockes la date en VARCHAR ? Ce n'est pas forcément une bonne idée, tout dépend ce que tu comptes en faire :
- juste l'afficher, donc c'est pas trop grave, excepté que dans le cas général, il ne faut pas faire ça, ne serait-ce parce qu'on ne peut plus localiser l'affichage ;
- faire des calculs, comparaisons, tris, etc... auquel cas, ce n'est pas bon du tout.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
le champ dans ma base est de type date, j'ai mis un champ mask et je l'ai introduit de cette manière
apparamment c'est faut il me dis "java.lang.String cannot be cast to java.sql.Date"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 stat.setDate(29, (Date) txtDate.getValue());
la déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private JFormattedTextField txtDate = new JFormattedTextField(); MaskFormatter dateMask = new MaskFormatter("##/##/####"); dateMask.setPlaceholderCharacter('_'); txtDate = new JFormattedTextField(dateMask); dateMask.install(txtDate);
Bah, oui, c'est normal : Un JFormattedTextField avec un MaskFormatter ne retourne que du String. Tu peux le convertir en java.util.Date avec un SimpleDateFormat.parse(). Il faudrait au moins ajouter un InputVerifier, parce que là on peut saisir 42/42/0000 qui n'est pas une date valide (ça va planter à la conversion).
Il vaut mieux utiliser un JFormattedTextField avec DateFormat :
Attention, c'est un java.util.Date qui est produit, or il te faut un java.sql.Date (voir ici pour la conversion).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DateFormat displayFormat = new SimpleDateFormat( le format d'affichage ); // format d'affichage par exemple : dd/MM/yyyy DateFormatter displayFormatter = new DateFormatter(displayFormat); DateFormat editFormat = new SimpleDateFormat( le format d'édition ); // peut être le même que le format d'affichage, ou un autre DateFormatter editFormatter = new DateFormatter(editFormat); DefaultFormatterFactory factory = new DefaultFormatterFactory(displayFormatter, displayFormatter, editFormatter); JFormattedTextField date2TextField = new JFormattedTextField(factory, new Date());// new Date() initialise à la date du jour
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
y'a pas autre méthode plus simple pour sauvegarder une date juste pour tester la sauvegarde dans ma base? je verrai après ce cours de date formatter
Simplement
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part stat.setDate(29, new Date());
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager