IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Suppression de ligne avec JTable


Sujet :

Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah, voilà, dans ta classe Connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package gestionoutilbricolage;
    import java.sql.*;
     
    public class Connexion {
     
        /* ... */
     
    }
    tu ajoutes toutes les méthodes que tu as besoin.

    Par exemple pour setAutoCommit, tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package gestionoutilbricolage;
    import java.sql.*;
     
    public class Connexion {
        /* ... */
     
        public void setAutoCommit(boolean autoCommit) throws SQLException {
            conn.setAutoCommit(autoCommit);
        }
     
    }
    Pareil pour les autres (rollback, commit...).

    Et tu peux mettre directement les 2 méthodes que j'ai donné (printSQLException et ignoreSQLException) dans cette classe, et modifier tes appels JDBCTutorialUtilities.printSQLException([...]); par Connexion.printSQLException([...]);.
    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.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Par exemple pour setAutoCommit, tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package gestionoutilbricolage;
    import java.sql.*;
     
    public class Connexion {
        /* ... */
     
        public void setAutoCommit(boolean autoCommit) throws SQLException {
            conn.setAutoCommit(autoCommit);
        }
     
    }
    Pareil pour les autres (rollback, commit...).

    Pour JDBCTutorialUtilities.printSQLException, le problème a été résolu avec ta méthode.
    Par contre pour rollback, commit, prestatement j'ai un toujours le problème, j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void rollback(java.sql.Savepoint s) throws SQLException {
           conn.rollback(rollback);
         }
         public void commit(java.sql.Savepoint s) throws SQLException {
           conn.commit(commit);
    }   
         public void  prestatement(java.sql.Savepoint s) throws SQLException {
           conn.prestatement(prestatement);
    }
    J'ai cherché sur internet une façon de déclarer roolback et commit, j'ai pas trouvé. J'ai juste trouvé cela:

    http://www.tutorialspoint.com/javaex...c_rollback.htm

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Les méthodes commit() et rollback() existent sans argument : il te suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void rollback() throws SQLException {
           conn.rollback();
         }
         public void commit() throws SQLException {
           conn.commit();
        }
    Les versions avec SavePoint permettent d'utiliser une transaction, qu'il faudra initialiser avec un startTransaction(), mais tu n'utilises pas ça dans ton programme, si ?

    Sinon, il suffit d'écrire correctement ces méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public void rollback(java.sql.Savepoint s) throws SQLException {
           conn.rollback(rollback);
         }
    la méthode rollback(Savepoint) de Connection attend un paramètre de type Savepoint, que tu as appelé s... puis rollback... Quand on déclare une variable avec un nom, on l'utilise avec ce même nom !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void rollback(java.sql.Savepoint s) throws SQLException {
           conn.rollback(s);
         }
    Tout simplement.

    Par contre, prestatement(Savepoint), ça n'existe pas. Mais si c'est de prepareStatement(String) dont tu parles, une méthodes qui prend une requête SQL sous forme de String en paramètre pour créer un objet de type PreparedStatement, alors c'est le même principe, et il suffit de respecter les types des paramètres, et de ne pas changer de nom en cours de route.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         public PreparedStatement prepareStatement(String sql) throws SQLException {
           return conn.prepareStatement(sql);
    }
    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.

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Merci, j'ai une dernière question pourrais-je faire la même chose pour delete juste en remplaçant update par delete?

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est le même principe, oui, pour exécuter un delete que pour exécuer un update (et même un insert en fait), mais il ne suffit pas de remplacer "update" par "delete" : la syntaxe SQL est légèrement différente.
    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.

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    finally {
            if (stmt != null) {
                stmt.close();
            }
     
        maconnexion.setAutoCommit(true)
        }
    stmt.close() et maconnexion.setAutoCommit(true) on encore unreported exception java.sql.sqlexception must be caught or declared to be thrown.

  7. #27
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par samo36 Voir le message
    unreported exception java.sql.sqlexception must be caught or declared to be thrown.
    C'est la base çà : si une méthode soulève un exception, il faut soit faire un catch, soit un throws...
    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.

  8. #28
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    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
     
    } finally {
            if (stmt != null) {
                try{
                stmt.close();
                }
                catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
                }
            try{
        maconnexion.setAutoCommit(true);
        }
        catch(SQLException excep) {
                  Connexion.printSQLException(excep);
            }
                }
     
     
     
    }

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at gestionoutilbricolage.FenetreListeOutil.<init>(FenetreListeOutil.java:49)
    at gestionoutilbricolage.GestionOutilbricolageView.jButton1ActionPerformed(GestionOutilbricolageView.java:228)






    merci du temps consacré depuis le début je vais trouver la méthode.

  9. #29
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at gestionoutilbricolage.FenetreListeOutil.<init>(FenetreListeOutil.java:49)
    at gestionoutilbricolage.GestionOutilbricolageView.jButton1ActionPerformed(GestionOutilbricolageView.java:228)
    Cette erreur signifie que tu invoques une méthode, ou tu acccèdes à un attribut, sur une variable non initialisée (Signification de NullPointerException). Dans la stacktrace, on te donne :

    • Le nom de la classe : FenetreListeOutil
    • Le nom de la méthode/constructeur : <init>, qui veut dire que c'est dans le constructeur
    • Le numéro de la ligne : 49
    • Et même le nom du fichier : FenetreListOutil.java


    Si avec ça tu n'arrives à voir de quelle variable il s'agit, donne-moi le code du constructeur, en indiquant quelle est la ligne 49.
    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.

  10. #30
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at gestionoutilbricolage.FenetreListeOutil.<init>(FenetreListeOutil.java:49)
    at gestionoutilbricolage.GestionOutilbricolageView.jButton1ActionPerformed(GestionOutilbricolageView.java:228)
    Je n'ai plus ce problème car j'avais oublier d'allumer phpadmin.
    Par contre quand je fais un test avec run main project sur netbeans j'ai un problème. Je selectionne une ligne de mon tableau en double cliquant, je fais ma modification puis j'appuie sur le bouton modifier. Netbeans se met en mode running. Je ferme l'application puis je l'a réouvre avec run main project mais la modification n'a pas été prise en compte .

    Voila le code du bouton modifier:

    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
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
      int ligneSelectionne = TableOutil.getSelectedRow(); 
    String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString(); 
      PreparedStatement stmt = null;
    String wql = "update outil Set nom_outil = ? where nom_outil = ?";
    try {
        maconnexion.setAutoCommit(false);
        stmt = maconnexion.prepareStatement(wql);
        stmt.setString(1, "outil A");
        stmt.setString(2, "outil avant");
        stmt.executeUpdate();
        maconnexion.commit();
        } catch (SQLException e ) {
          Connexion.printSQLException(e);
            if (maconnexion != null) {
                try {
                    System.err.print("Transaction is being rolled back");
                    maconnexion.rollback();
                } catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
            }
        } finally {
            if (stmt != null) {
                try{
                stmt.close();
                }
                catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
                }
            try{
        maconnexion.setAutoCommit(true);
        }
        catch(SQLException excep) {
                  Connexion.printSQLException(excep);
            }
                }
     
     
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString();
      PreparedStatement stmt = null;
    J'ai local hides pour outil et stmt, mais je sais que c'est pas une erreur mais juste un avertissement. Est ce que c'est ça la cause de l'absence de prise en compte des modification que je fais sur ma ligne sélectionné.

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je pense que ça vient du second paramètre qui est en dur. Dans le code suivant, tu récupères le nom de l'outil dans la ligne sélectionnée que tu mets dans la variable outil. Mais dans le paramètre 2, tu mets une chaine en dur ("outil avant") : cette requête modifie un outil qui s'appelle "outil avant", pour le renommer en "outil A".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString(); 
      PreparedStatement stmt = null;
    String wql = "update outil Set nom_outil = ? where nom_outil = ?";
    try {
        maconnexion.setAutoCommit(false);
        stmt = maconnexion.prepareStatement(wql);
        stmt.setString(1, "outil A");
        stmt.setString(2, "outil avant");
    Il faut donc que tu remplaces stmt.setString(2, "outil avant") par stmt.setString(2, outil).

    A noter, que quelque soit la ligne que tu modifies, le nouvel outil s'appelle toujours "outil A" :

    1. Il faudra probablement que tu prévois un champ pour saisir le nouveau nom
    2. Cela pose évidemment un problème d'utiliser comme critère de recherche le nom de l'ancien outil. Il vaut mieux utiliser un critère qui se fonde sur l'identifiant unique de l'outil pour retrouver l'outil à modifier.
    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.

  12. #32
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    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
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
      int ligneSelectionne = TableOutil.getSelectedRow(); 
    String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString(); 
      PreparedStatement stmt = null;
    String wql = "update outil Set id_outil = ? where id_outil = ?";
    try {
        maconnexion.setAutoCommit(false);
        stmt = maconnexion.prepareStatement(wql);
        stmt.setString(1, "id_outil A");
        stmt.setString(2, "id_outil" );
        stmt.executeUpdate();
        maconnexion.commit();
        } catch (SQLException e ) {
          Connexion.printSQLException(e);
            if (maconnexion != null) {
                try {
                    System.err.print("Transaction is being rolled back");
                    maconnexion.rollback();
                } catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
            }
        } finally {
            if (stmt != null) {
                try{
                stmt.close();
                }
                catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
                }
            try{
        maconnexion.setAutoCommit(true);
        }
        catch(SQLException excep) {
                  Connexion.printSQLException(excep);
            }
    }

    je vais utiliser id-outil pour la recherche. Par contre un exemple pour:
    Il faudra probablement que tu prévois un champ pour saisir le nouveau nom
    un champ propre?


    http://www.tutorialspoint.com/jdbc/j...te-records.htm

  13. #33
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par samo36 Voir le message
    je vais utiliser id-outil pour la recherche.
    Oui, mais non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String wql = "update outil Set id_outil = ? where id_outil = ?";
    C'est bien d'avoir changer le where pour faire la recherche sur l'id, mais pourquoi avoir changer le set ? C'est le nom que tu veux changer, pas l'id ! Surtout que l'id, tu ne peux probablement pas le modifier si tu as fait un champ autoincrémental.

    Et là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        stmt.setString(1, "id_outil A");
        stmt.setString(2, "id_outil" );
    tu n'as pas faire ce que j'ai dit : tu ne dois pas passer une chaine en dur ! Le paramètre 1 c'est une variable qui contient le nouveau nom, et le second paramètre une variable qui contient l'id de l'outil dans la ligne sélectionnée !

    Citation Envoyé par samo36 Voir le message
    Par contre un exemple pour un champ
    Bah, déjà, ça dépend comment tu comptes faire ton interface. On peut saisir le nom dans un formulaire, dans sa propre fenêtre, ou on pourrait le faire directement dans la JTable. Bon, comme tu as un bouton pour modifier une ligne, ce sera plus simple de le faire dans un formulaire. Un formulaire à un champ. Le plus simple est d'utiliser un JOptionPane, avec la méthode showInputDialog(). Tu as un exemple dans le tutoriel Oracle. Ici aussi.
    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.

  14. #34
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    p
    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
    rivate void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
        String  nomOutil = JTNomOutil.getText();
        String  fabricantOutil = JTFabricantOutil.getText();
        String  anneeFabrication = JTAnneeFabrication.getText();
        String  prix = JTPrix.getText();
     
      int ligneSelectionne = TableOutil.getSelectedRow(); 
    String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString(); 
      PreparedStatement stmt = null;
     
    String wql = "update outil Set nom_outil,fabricant_outil,annee_fabrication,prix_outil = ? where id_outil = ?";
    try {
     
        JOptionPane jop = new JOptionPane();
        String nom = (String)JOptionPane.showInputDialog(
       null,
       "Veuillez entrer votre modification",
       "Modification",
       JOptionPane.QUESTION_MESSAGE,
       new ImageIcon( 
             getClass().getResource("arbre.gif")),
     
     
        stmt.setString(1, "");
        stmt.setString(2, "id_outil");
        stmt.executeUpdate();
        JOptionPane.showMessageDialog(mainFrame, "Votre requête a été exécuté" );
            JTNomOutil.setText("");
            JTFabricantOutil.setText("");
            JTAnneeFabrication.setText("");
            JTPrix.setText("");
     
        maconnexion.commit();
        } catch (SQLException e ) {
          Connexion.printSQLException(e);
            if (maconnexion != null) {
                try {
                    System.err.print("Transaction is being rolled back");
                    maconnexion.rollback();
                } catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
            }
        } finally {
            if (stmt != null) {
                try{
                stmt.close();
                }
                catch(SQLException excep) {
                  Connexion.printSQLException(excep);
                }
                }
            try{
        maconnexion.setAutoCommit(true);
        }
        catch(SQLException excep) {
                  Connexion.printSQLException(excep);
            }
                }
     
     
     
    }
    Je veux pouvoir changer le nom de l'outil son prix etc...) donc j ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String wql = "update outil Set nom_outil,fabricant_outil,annee_fabrication,prix_outil = ? where id_outil = ?";
    Par contre, netbeans me dit que
    'void' type not allowed here ')' expected.
    pour
    ?

  15. #35
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Chaque ? dans le SQL d'un PreparedStatement représente la valeur d'UN paramètre ! Donc, il faut autant de ? que de paramètres !

    Et, donc, autant de setString( index du paramètre, valeur du paramètre ).
    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.

  16. #36
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Chaque ? dans le SQL d'un PreparedStatement représente la valeur d'UN paramètre ! Donc, il faut autant de ? que de paramètres !

    Et, donc, autant de setString( index du paramètre, valeur du paramètre ).
    je ne sais plus la ligne pour me connecter à ma base de donnée est ce celui la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stmt=maconnexion.ObtenirConnexion().createStatement();

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Suppression de lignes avec critère
    Par crespo12 dans le forum Lisp
    Réponses: 1
    Dernier message: 28/03/2012, 12h01
  2. [XL-2003] Macro de suppression de ligne avec un mot
    Par harisman87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2010, 16h50
  3. [WD-2007] Modèle Word - Suppression de ligne avec puce si vide
    Par vincent DD dans le forum Word
    Réponses: 1
    Dernier message: 26/08/2009, 22h14
  4. Suppression des lignes avec condition
    Par tientinou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2009, 12h35
  5. suppression des lignes avec sed
    Par dngaya dans le forum Linux
    Réponses: 1
    Dernier message: 29/09/2008, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo