Emprunter un livre

Fermé
amdnibrass Messages postés 23 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 28 juillet 2015 - Modifié par KX le 11/09/2014 à 19:34
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 11 sept. 2014 à 19:48
Bonjour,


j'essai de rédiger une methode en java permet d'emprunter un livre à un étudiants , voilà mon tentative
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

          try {
          int nb=0;/*nombre des livres disponbles*/
          int nb1=0;/*nombre des livre empruntés par un étudiant*/
            
          String mysql = "select nbrlivemp  from tableuser where iduser=?"; 
          String idu = idus.getText();
          
          pst = conn.prepareStatement(mysql);
          pst.setString(1, idu);
          rs = pst.executeQuery();
          while (rs.next()) {
          nb = rs.getInt("nbrlivemp");
          }
          if (nb==0){
          
            
            
            String mysql1="select nbLivDispo  from tableliv where idliv=?";
            String idL= idli.getText();
            pst1 = conn.prepareStatement(mysql1 );
            pst1.setString(2, idL);
              
            rs1 = pst1.executeQuery();
            while (rs1.next()) {
              nb1 = rs1.getInt("nbLivDispo");
                
            }  
            if (nb1 >=1) {
                nb++;
                nb1--;
                String val = String.valueOf(nb);
                String val1 = String.valueOf(nb1);
                String mysql2="update tableuser set nbrlivemp='"+val+"' where iduser=?";
                
                pst2= conn.prepareStatement(mysql2);
                 
                pst2.setString(1, idu);
                pst2.executeUpdate();
                String mysql3="update tableliv set nbLivDispo='"+val1+"' where idliv=?";
                
                pst3 = conn.prepareStatement(mysql3);
                 
                pst3.setString(2, idL);
                pst3.executeUpdate();
                
                JOptionPane.showMessageDialog(this, "livre bien emprunté "
                ,"Bien", JOptionPane.PLAIN_MESSAGE);
            }
                 
            else {  
                JOptionPane.showMessageDialog(this, "Pas de livre disponible"
                ,"livre 0 ", JOptionPane.PLAIN_MESSAGE);
            }
          }
          else{
              JOptionPane.showMessageDialog(this, "c'est suffisant  pour vous  SVP!!"
                ,"c suffisan pr vous !!", JOptionPane.PLAIN_MESSAGE);
              
          }
          }catch (Exception  ex) {
            Logger.getLogger(PreRen.class.getName()).log(Level.SEVERE, null, ex);

    }  

mais ceçi m'affiche seullement le cas ou l'étudiant n'a pas le droit de prendre
A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
11 sept. 2014 à 19:48
Bonjour,

En faisant ceci :

while (rs.next()) {
    nb = rs.getInt("nbrlivemp");
 }

La valeur de nb1 sera toujours la dernière lue. S'il y en a plusieurs tu perds toutes les autres. Idem lorsque tu fais cela :

while (rs1.next()) {
    nb1 = rs1.getInt("nbLivDispo");
}

Je pense que tu devrais revoir tes boucles pour lire les résultats.

Sinon tout le reste du code est crade !
Tu dois séparer tes instructions dans des méthodes et classes séparées.
Une partie qui gère les bases de données, une autre qui gère l'interface graphique et une troisième qui gère la logique métier. Là tu mélanges tout c'est un peu n'importe quoi. En plus je vois dans ton code la génération automatique de Netbeans ce qui est là encore une mauvaise idée.

De plus tu te sers très mal de tes preparedStatement, d'une part tu as encore des concaténations en dur genre
"nbrlivemp='"+val+"'"
, d'autres part tu places tes setString au mauvais indice, par exemple
pst1.setString(2, idL);
alors que pst1 n'a qu'un seul point d'interrogation...

Bref, ton code fourmille de bugs possibles, et pour l'instant c'est vraiment trop confus pour te dire d'où vient exactement ton problème, il peut potentiellement venir de partout (mauvaise requête à cause des preparedStatement, mauvais résultat à cause des boucles, etc.)
0