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

avec Java Discussion :

Pb au niveau d'une requete


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Par défaut Pb au niveau d'une requete
    Bonjour, je veux faire une requete sur mon serveur SQL mais j'ai une erreur:

    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
    23 mai 2008 11:27:12 Test.Test_BdD jButton1ActionPerformed
    GRAVE: null
    java.sql.SQLException: Column Index out of range, 14 > 1. 
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
            at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:794)
            at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5515)
            at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5434)
            at Test.GestionAutorisation.HeureSortie(GestionAutorisation.java:213)
            at Test.Test_BdD.jButton1ActionPerformed(Test_BdD.java:65)
            at Test.Test_BdD.access$000(Test_BdD.java:17)
            at Test.Test_BdD$1.actionPerformed(Test_BdD.java:39)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
            at java.awt.Component.processMouseEvent(Component.java:5488)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
            at java.awt.Component.processEvent(Component.java:5253)
            at java.awt.Container.processEvent(Container.java:1966)
            at java.awt.Component.dispatchEventImpl(Component.java:3955)
            at java.awt.Container.dispatchEventImpl(Container.java:2024)
            at java.awt.Component.dispatchEvent(Component.java:3803)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
            at java.awt.Container.dispatchEventImpl(Container.java:2010)
            at java.awt.Window.dispatchEventImpl(Window.java:1774)
            at java.awt.Component.dispatchEvent(Component.java:3803)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

    Je déclare mon champ DateHeureSortie dans la base de données comme un VARCHAR(2000).

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public static String HeureSortie(String user, String password, String url , String nomDriver, String NumCodeBarre) throws SQLException{
            heureSys = cal.get(Calendar.HOUR_OF_DAY);   //récupère les heures du système
            minuteSys = cal.get(Calendar.MINUTE);   //récupère les minutes du système
            sHeure = FormatCode(heureSys);  //on formate les heures sous la forme 05 ou 17
            sMinute = FormatCode(minuteSys);    //on formate les minutes sous la forme 05 ou 17
            System.out.println("Heure du systeme: "+sHeure);
            System.out.println("Minutes du systeme: "+sMinute);
            String HeureSortie = sHeure + sMinute;  //on concaténe les heures et les minutes sous la forme 0517 soit 5h17
            String date = formatDate();     //on veut une date sous la forme 22/05/2008
            String DateHeureSortieInitial = null;   
            GestionConnectBdD.ouvrir(user, password, url, nomDriver);   //connexion à la BdD
            GestionConnectBdD.ajouter("UPDATE employes SET HeureSortie="+"\"" + HeureSortie + "\" WHERE NumCodeBarre= "+"\"" + NumCodeBarre + "\" ");   //on ajoute une heure de sortie
            GestionConnectBdD.rechercher("SELECT DateHeureSortie From employes where NumCodeBarre = "+"\"" + NumCodeBarre + "\" "); //on recherche les valeurs placées dans le champ DateHeureSortie sur la BdD
            while(GestionConnectBdD.re.next()){
                    DateHeureSortieInitial = GestionConnectBdD.re.getString(14);    //on place la requete dans la variable DateHeureSortieInitial
            }
            String deconcateneHeuresSortie = HeureSortie.substring(00, 02); //on déconcaténe la chaine la chaine HeureSortie pour avoir les heures soit 05
            String deconcateneMinutesSortie = HeureSortie.substring(02, 04);//on déconcaténe la chaine la chaine HeureSortie pour avoir les minutes soit 17
            String HeureSortieFinale = deconcateneHeuresSortie + ":" + deconcateneMinutesSortie + " | "; 
            String DateHeureSortie = date + ";" + HeureSortieFinale; //on concaténe les chaines soit: 22/08/2008;05:17
            String DateHeureSortieFinale = DateHeureSortieInitial + DateHeureSortie;  //on ajoute les nouveaux param aux param initials
            GestionConnectBdD.ajouter("UPDATE employes SET DateHeureSortie="+"\"" + DateHeureSortieFinale + "\" WHERE NumCodeBarre= "+"\"" + NumCodeBarre + "\" "); //on charge les nouveaux param pour le champ DateHeureSortie sur la BdD
            System.out.println(DateHeureSortieFinale);
           // GestionConnectBdD.fermer();
            return HeureSortie;
        }
     
     
     
        public static String FormatCode(int var){
            String Svar = Integer.toString(var);
            if(Svar.length()<2) //test si la longueur de la chaine est <2
            {
                Svar = "0" + Svar; //on rajoute un 0 devant la chaine
            }
            return Svar;
        }
     
        public static String formatDate(){ //Revoie une date sous la forme jj/mm/aaaa 
            int moisSys = cal.get(Calendar.MONTH) + 1;
            String SmoisSys = FormatCode(moisSys);
            int dateSys = cal.get(Calendar.DATE);
            String SdateSys = FormatCode(dateSys);
            int anneeSys = cal.get(Calendar.YEAR);
            String SanneeSys = FormatCode(anneeSys);
            String date = SdateSys + "/" + SmoisSys + "/" + SanneeSys;
            System.out.println(date);        
            return date;
        }
    }

    Dans mon bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     try {          
                GestionAutorisation.HeureSortie("root", "root", "jdbc:mysql://10.104.100.57:3306/snecmajava", "org.gjt.mm.mysql.Driver", "9204521220089");
            } catch (SQLException ex) {
                Logger.getLogger(Test_BdD.class.getName()).log(Level.SEVERE, null, ex);
            }

    Pouvez-vous m'aider?

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Par défaut
    Pourquoi tu cherches le 14 ème élément de ton ResultSet (si je comprends bien ton code vu qu'il n'y a pas tout), tu as un select qui te retourne 14 ou plus éléments ? Si on se fie au select juste en dessus ce n'est pas le cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateHeureSortieInitial = GestionConnectBdD.re.getString(14)

  3. #3
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Tu fais une sélection qui retourne un résultat avec seule une colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DateHeureSortie From employes where ...
    Et tu demandes le résultat de la 14ème colonne !?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GestionConnectBdD.re.getString(14);
    D'où l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Column Index out of range, 14 > 1.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Par défaut
    en faite je veux mettre dans une variable, ce que je trouve avec la requete: GestionConnectBdD.rechercher("SELECT TempsPreAnnuel From employes where NumCodeBarre = "+"\"" + NumCodeBarre + "\" "); Comment faire ?


    Et voilà mon code qui gère la connexion... à la BdD:
    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
    72
    package Test;
     
    import java.sql.*;
     
    public class GestionConnectBdD {
     
        static Connection con = null;
        static Statement sta;
        static ResultSet re;
        static ResultSetMetaData metaBase;
     
        public static void ouvrir(String user, String password, String url, String nomDriver) {
            try {
                Class.forName(nomDriver);
                con = DriverManager.getConnection(url, user, password);
                System.out.println("Ouverture de la connexion");
                sta = con.createStatement();
            } catch (ClassNotFoundException ex) {
                System.err.println("Ne peut pas trouver les classes du conducteur de la base de données.");
                System.err.println(ex);
            } catch (SQLException ex) {
                System.err.println("Pas de connexion à la base de de données.");
                System.err.println(ex);
            }
        }
     
        public static ResultSet rechercher(String query) {
            try {
                re = sta.executeQuery(query);
                System.out.println("Element trouvé ");
            } catch (SQLException ex) {
                System.err.println(ex);
            }
            return re;
        }
     
        public static void ajouter(String query) {
            try {
                sta.executeUpdate(query);
                System.out.println("Elément ajouté a la base");
            } catch (SQLException ex) {
                System.err.println(ex);
            }
        }
     
        public static void modifier(String query) {
            try {
                sta.executeUpdate(query);
                System.out.println("Elément Modifié");
            } catch (SQLException ex) {
                System.err.println(ex);
            }
        }
     
        public static void supprimer(String query) {
            try {
                sta.executeUpdate(query);
                System.out.println("Elément suprimé");
            } catch (SQLException ex) {
                System.err.println(ex);
            }
        }
     
        public static void fermer() {
            try {
                re.close();
            } catch (SQLException e) {
                System.out.println("Problème de fermeture de la Base de données");
            }
            System.out.println("Base de données Fermée");
        }
    }
    Merci d'avance.

  5. #5
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pour le problème précédent, il suffit de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GestionConnectBdD.re.getString(1);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TempsPreAnnuel From employes where ...
    A la même forme il faut faire la même chose.

Discussions similaires

  1. Comment éviter un FULL SCAN au niveau d'une sous requete
    Par ora_home dans le forum Administration
    Réponses: 1
    Dernier message: 07/09/2014, 18h19
  2. [A-03] niveau zéro : fermer une requete
    Par gui-llaume dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/10/2008, 13h02
  3. Pb au niveau d'une requet
    Par top_skiner dans le forum Développement
    Réponses: 0
    Dernier message: 09/09/2008, 12h40
  4. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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