Souci de modification d'enregistrement

coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014 - 14 oct. 2010 à 23:25
coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014 - 15 oct. 2010 à 20:50
Bonsoir à tous, je recherche une solution pour un souci de modification d’enregistrement que je traine depuis trois jours. Dans mon application je me suis servi de 4 boutons (premier, suivant, précédent, dernier)pour naviguer à travers les enregistrements de ma table, et faciliter ainsi les opérations de suppression et de modification, mais avant je vous explique la logique que je voudrai appliquer.
Lorsque je veux modifier un enregistrement, a l’aide de mes boutons, je défile jusqu'à l’enregistrement à modifier, et quand je clique sur le bouton modifier, qu’un autre formulaire m’affiche les données de l’enregistrement à modifier, et au click du bouton sauvegarder se trouvant sur ce formulaire, que les données soient modifiés dans la table. Seulement voici le problème auquel je suis confronté. Dans mon 1er formulaire il existe déjà un bouton « Sauvegarde » me permettant de sauvegarder les insertions d’enregistrement dans la table, serait ce possible que ce même bouton serve à la fois à la sauvegarde des insertions et à la modification des enregistrements ?Dans la méthode action performed du bouton modifier j’ai récupéré l’identifiant de l’enregistrement à modifier,mais je n’arrive pas à afficher les données dans les champs dédiés dans le 2eme formulaire,
Voici mon codes:

private void modifierActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        deverrouiller();
        desactiver();
        final int[] answer = new int[1];
         answer[0] = JOptionPane.showConfirmDialog(null,
                "Voulez-vous vraiment modifier cet enregistrement ?",
                "Modification",
                JOptionPane.YES_NO_OPTION);
                if (answer[0] == JOptionPane.YES_OPTION) {
                    try {
                         connection = DataBaseConnector.getConnection();
                         String rq = ("select * from Compte where NumCpte="+numerocpte.getText());
                         Statement stm =connection.createStatement();
                         if(rs.next())
                         {
                            /* nom1.setText(rs.getString("NomClt"));
                             prenom1.setText(rs.getString("PrenomClt"));
                             residence1.setText(rs.getString("ResidenceClt"));
                               profession1.setText(rs.getString("ProfessionClt"));
                              adresse1.setText(rs.getString("AdresseClt"));
                               tel1_1.setText(rs.getString("TelephonneClt1"));
                               tel2_1.setText(rs.getString("TelephonneClt2"));
    A ce niveau je devrais pourtant arrivé à initialiser les champs du 2eme formulaire qui est  une copie conforme du 1er sauf que j'ai changé le nom des variable. 
                       */  }
 } catch (Exception e) {
e.printStackTrace();
        }
                            modif mdf = null;
            try {
                mdf = new modif();
            } catch (SQLException ex) {
                Logger.getLogger(CreationCompte.class.getName()).log(Level.SEVERE, null, ex);
            }
                            mdf.setVisible(true);
                       }
    }      

Mes variables sont de types privés dans chacun des formulaires, j’espère que mon souci n’est pas dû à cela. Pouvoir afficher des variables privées d’un formulaire à partir d’un autre, j’attends impatiemment vos réponse. Merci d’avance.

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 oct. 2010 à 07:56
Salut,

Ce n'est pas très propre de mélancer interface graphique, code pour accéder à la base de données et code pour charger les données de la base et les mettre dans des champs d'interface. Tu devrais repenser l'organisation de ton code afin d'avoir une classe pour chaque couche de ton application, ainsi ce serait bien plus clair et moins source de bugs.

Tu nous dit que tu n'arrives pas à charger tes données, ok, mais qu'est-ce que tu n'arrives pas à faire ? As-tu des exceptions qui se déclenchent ?

Ton champ NumCpte est de quel type dans ta base ? Si c'est un VARCHAR, il faut entourer sa valeur par des apostrophes dans ta requête SQL.
Est-ce que tout les champs dont tu récupère la valeur sont bien de type VARCHAR là aussi ?

Concernant ta requête, voici ce que je te conseille plutôt :
String rq =  "select * from Compte where NumCpte=?";
PreparedStatement stm =connection.createStatement();
stm.setString(1, numerocpte.getText());


Ainsi il te rajoutera automatiquement les apostrophes, doublera les apostrophes de ta valeur si besoin, tout cela selon le type de base de données utilisée.



Sinon tu ouvres un statement mais tu n'en récupère pas la valeur :
String rq = ("select * from Compte where NumCpte="+numerocpte.getText());
Statement stm =connection.createStatement();
if( rs .next())

Que vaut rs ici ???
il te faut récupérer le resultset de l'exécution de ton statement :
Resultset rs = stm.executeQuery();


Et dernier conseil : n'oublie pas de fermer ton resultset et ta connexion dans un finaly sinon tu auras une fuite mémoire, et tu risques voir ton programme planter avec un OutOfMemory d'ici peu de temps si tu passes régulièrement dans ce bout de code.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014
15 oct. 2010 à 20:50
Merci pour votre critique,je la prendrai en considération,mais j'ai l'impression que vous ne m'avez pas tout à fait compris,en fait le traitement d'une modification ne cessite en plus du formulaire dans lequel le bouton modifier se trouve un autre formulaire,qui est exactement le meme que le 1er.le role de ce dernier est d'afficher les valeurs de l'enregistrement à modifier provenant de la base de données.Seulement je n'arrive pas à afficher ces valeurs dans les champs correspondant du 2eme formulaire.je me dis que c'est peut-être une question de visibilité des variables puisque dans chacun des deux formulaires mes variables sont de type privé.j'ai pensé à utilisé des java beans,mais le système signale des érreurs.en fait j'utilise le JFrame,le glissé déposé des objets de netbeans 6.8,et derriere chaque objet j'écris le code correspondant,peut-être que c'est ce qui fait que mes java beans ne marche pas.aidez moi.
0
Rejoignez-nous