ah non, cela ne marche pas !Même si je ne récupère rien, ça devrait quand même exécuter la requête non ?
tu dois impérativement utiliser la méthode execute() sur le Statement
ah non, cela ne marche pas !Même si je ne récupère rien, ça devrait quand même exécuter la requête non ?
tu dois impérativement utiliser la méthode execute() sur le Statement
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Par ailleurs, à la fin, il faudra impérativement passer au PreparedStatement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Statement st = conexion.getCon().createStatement(); st.execute("INSERT INTO Realiser (IdCC, IdAnnexe, TypeCC) VALUES ("+idCC+", "+annexe.getIdAnnexe()+", 'Sous-Traitant');");
car le bricolage de requête où on a :va PLANTER si on a une société avec une apostrophe genre : "O' Connor limited"
Code : Sélectionner tout - Visualiser dans une fenêtre à part "SELECT ActiviteSociete FROM Societe WHERE NomSociete ='"+societeP.getNom()+"';"
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Oula, alors plusieurs questions :
- Est ce que executeQuery est pour les SELECT etc... et les executeUpdate pour les INSERT, UPDATE ... ?
- Est ce que je dois utiliser à nouveau le type ResultSet si je redéfini une nouvelle méthode ?
J'ai essayer de définir une nouvelle méthode sous getResultSet :
Elle m'a l'air d'être sans erreur, mais ce qui m’étonne c'est qu'il faut impérativement une valeur de retour (ici null)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public ResultSet setInsert(String sql) { try { Statement requete = getConnexion().createStatement(); requete.executeUpdate(sql); return null; } catch (Exception e) { e.printStackTrace(); return null; } }
Pour le PreparedStatement, je ne peux pas l'effectuer facilement dans getResultSet et setInsert non ?
Comment faire si j'ai quelque chose du type :
Il faudrait des arguments sans connaitre le nombre, il faudrait polymorpher à fond non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?"); pstmt.setBigDecimal(1, 153833.00) pstmt.setInt(2, 110592)
Et ce serait moche comme code ...
Oui
Non cela ne sert à rien
ta méthode utilitaire dans Connexion serait plutôt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void execSql(String sql) { try { Statement requete = getConnexion().createStatement(); requete.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); return null; } }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Ok je vais voir comment remplacer rapidement tous les :
Par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part connexion.getResultSet("INSERT
Dans l'application
Code : Sélectionner tout - Visualiser dans une fenêtre à part connexion.execSql("INSERT
Minceouille j'ai oublié de fermer la connexion dans executeSql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void execSql(String sql) { try { Statement requete = getConnexion().createStatement(); requete.executeUpdate(sql); closeConn(); } catch (Exception e) { e.printStackTrace();return null;} }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
T’inquiètes pas, je l'ai déjà corrigé
A présent, j'ai corrigé tous les getResultSet en execSql concernant les requêtes INSERT et UPDATE.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Roger that SIR :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 package coactivite2; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.*; public class Connexion { public Connection con; public Connection getConnexion() { try { String url = null; String fichier = "X:/link/connexion.xml"; FileInputStream ips = new FileInputStream(fichier); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr); url = br.readLine(); br.close(); String pilote = "com.mysql.jdbc.Driver"; Class.forName(pilote); } catch (Exception e) { e.printStackTrace(); } //connection a la base de données try { String DBurl="jdbc:mysql://IPv4/coactivitenew"; String login="xxx"; String password="xxx"; con = DriverManager.getConnection(DBurl,login,password); java.util.Properties prop = new java.util.Properties(); prop.put("charSet", "ISO-8859-1"); con.setClientInfo(prop); return con; } catch (SQLException e) { System.err.println("Erreur de connexion à la base de données!"); System.err.println(e); e.printStackTrace(); return con; } } public ResultSet getResultSet(String sql) { try { Statement requete = getConnexion().createStatement(); ResultSet rs = requete.executeQuery(sql); return rs; } catch (Exception e) { e.printStackTrace(); return null; } } public void execSql(String sql) { try { Statement requete = getConnexion().createStatement(); requete.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } } public void closeConn() { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } }
Au passage, selon toi, qu'est ce qui est mieux entre l'importation de plusieurs libs (par ex) :
- x.text
- x.color
- x.test
ou du pack complet ?
- x.*
Je n'ai jamais vu la différence et très franchement, je ne regarde même plus.
Quand j'écris du code et que j'utilise une nouvelle classe alors NB me la souligne en rouge et allume une ampoule dans la marge.
A ce moment, je fais Alt+Enter et NB me propose les imports possibles (en général le 1er est le bon)
Il rajoute juste l'import nécessaire et pas tout le package. Je suppose que cela doit optimiser un peu le code.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Ok
Bon, qu'est ce qu'on fait de ca maintenant ?
Je supprimer complètement le try catch ? Je pense qu'il devrait il y avoir une ouverture de co à l'ouverture de l'application quelque part ... je vais fouiner
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 /* Evènements à la fermeture de la fenêtre */ public void windowClosing(WindowEvent arg0) { /* Suppression de l'espace réservé dans la base pour l'annexe en cours */ Annexe.deleteAnnexeEnCours(Integer.parseInt(jTextFieldNumAnnexe.getText())); try { Connexion.conn.close(); } catch (Exception e) { Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, e); e.printStackTrace(); } dispose(); }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Voic à quoi cela ressemble maintenant :
Sinon j'ai fait une recherche sur toute l'application de la chaine : ".conn." qui était autrefois la variable de co.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /* Evènements à la fermeture de la fenêtre */ public void windowClosing(WindowEvent arg0) { /* Suppression de l'espace réservé dans la base pour l'annexe en cours */ Annexe.deleteAnnexeEnCours(Integer.parseInt(jTextFieldNumAnnexe.getText())); dispose(); }
Aucun résultat !
On passe au bug à présent ?
à l'attaque !On passe au bug à présent ?
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
A va aller directement à l’essentiel dans un premier temps si tu veux bien
C'est à dire ceci :
Pour le moment, NB m'annonce :
Mais je crois que tu m'avais dit que ce n'était pas urgent pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Thu Nov 03 11:38:08 CET 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Sinon, les dates ont l'air bien affichées et mon nom est bien récupéré apparemment
Ensuite, dans les "détails" :
- l'appli est un poil trop petite en hauteur.
- un truc bizarre, quand je clique sur un déroulant, il m'affiche la liste mais que sur une ligne et quand je reclique il me la présente mieux (5 ou 6 ligne) pareil pour les menus déroulant de la groupBox Intervention.
- Dans le champ texte activité, le texte apparait uniquement quand j'ai cliqué dans le champ texte et non pas à la selection d'un item de mon menu déroulant
- Pareil pour chef de chantier, la liste se met à jour uniquement si je clique dessus, c'est dommage... (téléphone pareil)
on s'attache à ca ou on laisse pour le moment ? (les users sont habitué à ca). Je pense que tu vas me dire on laisse pour le moment alors je passe à la suite (mais gardons ca en tête )
Le premier point est la retenu d'un numéro d'annexe dans la groupBox Informations générales. Je ne pense pas que ce soit pertinent pour le moment si ? (il passerons sur un Excel à la création où le numéro sera présent).
S'il y a un numéro ici c'est qu'il à déjà fait un INSERT d'une occurrence dans la BDD vide...
Si les utilisateurs ont l'habitude, il est urgent d'attendre ...
Ce genre de mise au point peut prendre énormément de temps.
Il est crucial de vérifier que tu peux bien faire toutes les créations / modification / suppression pour prouver que Java+MySql fonctionne bien.
Donne-toi des exemples de fiches et vérifie aussi directement dans la base que les informations sont bien écrites ...
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Bon, je vais donc prendre un autre exemple pour vérifier le bon fonctionnement de cette communication alors
Onglet concerné :
- Modifier bug quand personne n'est selectionné
- Modifier avec une personne selectionné fonctionne parfaitement
- Ajout fonctionne mais fait buggé le tableau (plus personne de visible sauf la derniere insertion)
- Supprimé ne fonctionne pas du tout
Il n'est pas censé passer par un execSql plutot qu'un getResultSet ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 java.sql.SQLException: Can not issue data manipulation statements with executeQuery(). at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:463) at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1324) at coactivite2.Connexion.getResultSet(Connexion.java:50) at coactivite2.ChargeAffaire.deleteCharge(ChargeAffaire.java:217) at coactivite2.Fenetre.jButtonSupprimerChargeActionPerformed(Fenetre.java:5658) at coactivite2.Fenetre.access$7800(Fenetre.java:30) at coactivite2.Fenetre$80.actionPerformed(Fenetre.java:4884)
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