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

JDBC Java Discussion :

j'arrive pas à parcourir un resultset avec while


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut j'arrive pas à parcourir un resultset avec while
    Bonjour,

    Je fais une requete et j'essaie de parcourir le resultat dans une boucle while (le code eest plus bas) mais le pense que le prog fait la requete mais ne parcourt pas la boucle.
    Et pourtant j'ai l'impression que ne ferme ma base nulle part voici le code de
    la requete :

    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
     
     
               // Inscription dans la base
                String requete="select nomLogiciel from licence where  dateAlerte=\"12/12/2004\"" ;
                 TestBdd instance = new TestBdd() ;
                resultat = instance.interrogerBdd(requete) ;
                System.out.println("interrogation terminée") ;
     
     
                // Utilisation des résultats 
     
                            while (resultat.next()) {
                                System.out.println("je suis dans le while") ;
                   nomLogiciel = resultat.getString("nomLogiciel" ) ;
                 System.out.println(nomLogiciel) ;
                 instance2 = new EnvoyerMailHamster("nomMachine",true,"nomLogiciel") ;            
     
     
                            }
    L'affichage s'arrete à interrogation terminée mais ça ne continue pas.
    Voici le code de ma classe qui gère la connection à la BDD , je n'ai pas l'impression de fermer la base.
    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
     
    public class TestBdd {
     
        // Les attributs
        Connection con ;
        Statement st ;
        ResultSet rset ;
     
        // Le constructeur
        public TestBdd()
        {
         try {
            // Chargement du pilote
            Class.forName("com.mysql.jdbc.Driver") ;
     
            // Création de l'objet Connection
            String url ="jdbc:mysql://localhost/aaaaaaa" ;
            String user = "root" ;
            String password = null ;
            con = DriverManager.getConnection(url, user, password) ;
     
            // Creation de l'objet Statement pour les requêtes
            st = con.createStatement() ;
            System.out.println("La connection a été ouverte") ;
        }
          catch (SQLException e){
     
          //   System.out.println(e.getMessage()) ;
              JOptionPane.showMessageDialog(null,"Impossible de contacter la BDD");                                                     
     
         }
         catch(Exception e){
             System.out.println("Un problème est survenu") ;
         }
        }
     
        // Les méthodes
             //Fermeture de la base
        public void closeBdd()
        {
          try {
            con.close();
            System.out.println("la base a été fermée");
        }
           catch (Exception e) {
                System.out.println(e.getMessage()) ;
            }
        }
     
           // Requete de consultation
        public void consulterBdd(String requete)
        {
            try {
            st.execute(requete);
        }
            catch (Exception e) {
                System.out.println(e.getMessage()) ;
            }
        }
            // Interroger la base
       public ResultSet interrogerBdd(String requete)
        {
           try {
           rset= st.executeQuery(requete) ;
     
        } 
           catch (Exception e) {
               System.out.println(e.getMessage()) ;
           }
       return rset ;
       }
    Merci de votre aide

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Tu es sur que si tu joue cette requête directement sur ta base tu as bien au moins un résultat?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut
    autant pour moi, effectivement il n'y avait pas de resultat donc il faudra que je fasse un test du genre if(resultat != null) .

    Sinon pour ne pas ouvrir inutilement un autre post est ce que vous pouvez m'aider pour la requete suivante :
    La requete suivante marche en mode console sur mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into licence values (' ' , "A","B","c") ;
    Par contre quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     String requete = "insert into licence values(' ',\"" + A + "\",\"" + Bl + "\",\"" + C + "\")
    J'ai le message column doesn't match value count at row 1.
    Le premier champ est un champ auto increment comment dois je l'écrire lors de la concaténatino des String.

    Merci

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into nomTable values(v1, v2, ..., vn)
    et il faudra mettre une valeur à toutes les colonnes de ta table,

    soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into nomTable(col1, col5, coln) values(v1, v5, vn)
    et là, tu choisis les colonnes...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Perso, je passerais également par un PreparedStatement pour me faciliter la vie...

    EDIT : et j'imagine que tout ton code n'était pas posté, mais pense bien à fermer ton resultset (et son statement lié).

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut
    Mon problème vient de mon champ auto_increment.
    J'ai un ensemble de Jtextfield l'utilisateur remplit les champs et quand il valide
    après verification des entrées une requete est effectuée sur la base de données.
    Mais comment je dois écrire le champ auto_increment dans le string.
    Tel qui'il est écrit dans le code ci dessous j'ai l'erreur column doesn't match value count.
    Voici mon code :
    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
          JButton source = (JButton)e.getSource() ;
                    if ( source.equals(validerFicheLicence))
                    {
                        try {
                            
                            // On va récupérer les JTextField
                            NomLogiciel = nomLogiciel.getText();
                            VersionLogiciel = versionLogiciel.getText();
                            Editeur = editeur.getText();
                            Fournisseur = fournisseur.getText();
                            DateDebutContrat = dateDebutContrat.getText();
                            DateExpiration = dateExpiration.getText();
                            DateAlerte = dateAlerte.getText();
                            PersonneAContacter = personneAContacter.getText();        
                                                                    
                                                             
                                
                                String requete = "insert into licence values('',\"" + NomLogiciel + "\",\"" + VersionLogiciel + "\",\"" + Editeur + "\",\"" + DateDebutContrat + "\",\"" + DateExpiration + "\",\"" + DateAlerte + "\",\"" + PersonneAContacter + "\")";                            TestBdd instance = new TestBdd();
                                instance.consulterBdd(requete) ;                                                       
                                JOptionPane.showMessageDialog(null, "La requete a été réalisé avec succès ");
                            }  // Fin du try
                               catch (Exception ex){
                                 JOptionPane.showMessageDialog(null,"erreur dans la requete") ;  
                               } // Fin du catch                 
                    } // Fin du if                           
                } // Fin du actionPerformed                         
            } // Fin du add
                ) ;
            
            
                } // Fin du constructeur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Je n'arrive pas à parcourir mon tableau $_POST
    Par beegees dans le forum Langage
    Réponses: 7
    Dernier message: 22/03/2009, 11h59
  2. Je n'arrive pas à faire ma requete avec jointure voulue
    Par yann123456 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/02/2009, 20h02
  3. Réponses: 9
    Dernier message: 11/04/2006, 23h14
  4. [SQL-Server] Je n'arrive pas à faire tourner php avec Sql server (2005)
    Par bluecurve dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/03/2006, 18h50
  5. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 10h18

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