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 :

Probleme sur executequery


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Probleme sur executequery
    Voila mon problème.
    J'ai deux class dans lesquelles je requete une base mysql.
    Sur l'une, la requete s"execute bien, et sur l'autre il se plante et me retourne que la table n'existe pas ?
    Je joins les deux extraits de code.

    celle-ci ne marche pas:
    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
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.*;
     
    public class Maj implements ActionListener {
        static ResultSet resultat;
     
        public void actionPerformed(ActionEvent contexte) {
                try {
                    resultat = principal.stmt.executeQuery("SELECT * FROM cheques_recus WHERE numero_cheque = 4444;");
                    System.out.println("requete reussie");
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                    System.out.println("erreur sur la select");
                }
            }
        }
    *******************************************************************************************
    celle-ci marche !:
    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
     
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
     
    public class select  {
        static ResultSet Resultat;
        static int LigCourante;
        static int NbrLignes;
        static String DateAffiche;
     
        public  select(String Var, String Drapo){
            String SQL = null;
            if(Drapo=="Num")
                SQL = "SELECT * FROM cheques_recus " +
                "WHERE numero_cheque = " + Var+ ";";
            if(Drapo=="Nom")
                SQL = "SELECT * FROM cheques_recus " +
                "WHERE nom_debiteur LIKE \"%" + Var+ "%\";";
                LigCourante = 1;
                try {
                    System.out.println(SQL);
                    Resultat = principal.stmt.executeQuery(SQL);
                }
                catch (SQLException e) {
                    // TODO Auto-generated catch block
                    FenListeCheRecus.AffichCommentaires("Pas de résultat");
                }
        }    
    }
    Je ne comprends plus !
    merci

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Pour la partie like, la valeur est entre quotes (') pas doubles-quotes (").
    Inutile de mettre le ";" à la fin de ta requête...

    Sinon, ça peut aussi venir du fait qu'un paramètre est null, et tant que j'y suis, les conventions de nommage en java voudraient que les variables commencent par une minuscule...

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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pour la partie like, la valeur est entre quotes (') pas doubles-quotes (").
    Inutile de mettre le ";" à la fin de ta requête...

    Sinon, ça peut aussi venir du fait qu'un paramètre est null, et tant que j'y suis, les conventions de nommage en java voudraient que les variables commencent par une minuscule...

    A+
    Je prends en compte vos remarques. Mais cette class fonctionne parfaitement, l'autre class, dans laquelle j'ai un selcet tout simple me renvoi : table 'cheques_recuc' does not exist.
    Je ne comprend pas. J'exécute en sorte d'avoir la stricte même syntaxe dans l'une ou l'autre class, et j'ai toujours la même erreur. J'ai fini à croire que cela ne vient pas du code, mais à son environnement.

    Merci pour la réponse
    COrdialement

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de l'objet représenté par "principal" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Peux-tu montrer le code de l'objet représenté par "principal" ?
    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
     
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class principal {
     
        /**
         * @param args
         */
        static Connection con;
        static Statement stmt;
        static ResultSet essai;
     
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //System.out.println("Debut application chèques");
            OuvBase OBase = new OuvBase();
            con = OBase.ouvbase();
            try {
                stmt = con.createStatement(essai.TYPE_SCROLL_SENSITIVE,essai.CONCUR_UPDATABLE);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // Corps du programme
            FenListeCheRecus fenetre = new FenListeCheRecus(stmt);
     
            //Quitter Fin = new Quitter();
        }
     
    }
    Merci encore pour l'aide, je cherche aussi de mon coté.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu as une Exception ?

    Dans tous les cas, la méthode n'est pas la bonne.
    On ne met pas des ressources comme une connexion, un statement, ... dans des propriétés static (donc liées à la classe). Si tu as 2 méthodes qui veulent faire une requête en même temps, tu te plantes tout...

    L'idéal serait de créer une méthode static d'une classe utilitaire pour acquérir une connexion et d'utiliser puis fermer les ressources dans la méthode qui les utilise.
    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
     
    public void maMéthode(...)
    {
       Connection connection = null;
       Statement stmt = null;
       ResultSet rs = null;
       try
       {
          connection = MaClasseUtilitaire.getConnection();
          stmt = connection.createStatement();
          rs = stmt.executeQuery(...);
          while (rs.next())
          {
             ...
          }
       }
       catch (Exception e)
       {
          ...
       }
       finally
       {
          if (rs != null) try { rs.close(); } catch (Exception e) {}
          if (stmt != null) try { stmt.close(); } catch (Exception e) {}
          if (connection != null) try { connection.close(); } catch (Exception e) {}
       }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut N° de chèque ?
    Bon, je ne connais pas MySQL, mais une chose me surprend dans ta requête, c'est que ton numéro de chèque soit au format numérique.
    Si c'est du texte, il faudrait plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM cheques_recus WHERE numero_cheque = '1234444';
    Par ailleurs, un numéro de chèque, en France, est toujours sur 7 positions.
    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/

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Je remercie tout d'abord de l'aide apporter. Comme vous vous en êtes certainement aperçu je suis débutant en java, je débute la programmation objet à un age avançé.
    J'ai résolu mon erreur, en corrigeant un test logique sur le retour du resultset, il ne fonctionnait pas.
    Le libellé de l'exception nous induisait en erreur. Je voulais tester si le retour du resultset était nul alors qu'il suffisait de traiter dans le catch !

    merci encore

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

Discussions similaires

  1. [LG]Probleme sur l'identification de typage
    Par axelmeunier dans le forum Langage
    Réponses: 10
    Dernier message: 19/01/2004, 13h41
  2. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  3. Probleme sur le Fields des fichiers Xmlgram
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 4
    Dernier message: 20/03/2003, 17h09
  4. Probleme sur un AppendChild
    Par Toxine77 dans le forum XMLRAD
    Réponses: 3
    Dernier message: 14/03/2003, 18h25
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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