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 :

Problème avec sql-jtable


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème avec sql-jtable
    Bonjour, je trouve un problème lorsque je veut remplir ma Jtable avec une requête sql :
    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
    import java.sql.*;
    import javax.swing.*;
     
    public class Fenetre extends JFrame {
      Statement stm ;
      Connection con ;
      ResultSet  res ; 
      int i;
      int l ;
      public Fenetre(){
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("JTable");
        this.setSize(300, 120);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost/gestion_stagiaires","root","point."); 
             stm = con.createStatement() ;
             res=stm.executeQuery("Select nom,prenom from Stagiaire;");
             res.last();
             int x = res.getRow();
             res.first();
             Object[][] data = new Object [2][2];
             l = 1;
             while(res.next()) {
        data[l][1] = res.getString(1);
        System.out.print(data[l][1]);
        data[l][2]= res.getString(2);
        System.out.print(data[l][2]);
        l++;
        res.next();   }
     
        //Les titres des colonnes
        String  title[] = {"nom", "prenom"};
        JTable tableau = new JTable(data, title);
        //Nous ajoutons notre tableau à notre contentPane dans un scroll
        //Sinon les titres des colonnes ne s'afficheront pas !
        this.getContentPane().add(new JScrollPane(tableau)); }
        catch (Exception e) { 
                System.out.println("ERROR :"+e.getMessage());
            }  
      }   
     
      public static void main(String[] args){
        Fenetre fen = new Fenetre();
        fen.setVisible(true);
      }   
    }
    ça ne marche pas :/ et ça me donne une erreur "ERROR : 2";

    Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    prend l'habitude de tracer tes exceptions par e.printStackTrace() au lieu de System.out.println("ERROR :"+e.getMessage()), tu auras plus d'info pour comprendre ce type de problème.

    si on suppose que cette erreur est une erreur mysql à la connexion, cela veut dire "fichier non trouvé" il me semble... tu peux te connecter à ta base avec squirrel ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    j'ai modifié le message d'erreur et ça donne ça :

    java.lang.ArrayIndexOutOfBoundsException: 2
    at Fenetre.<init>(Fenetre.java:28)
    at Fenetre.main(Fenetre.java:45)


    je sais pas exactement ce que ça veut dire, je suis encore débutant en java..

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par 7Ayoub Voir le message
    Bonjour,
    j'ai modifié le message d'erreur et ça donne ça :

    java.lang.ArrayIndexOutOfBoundsException: 2
    at Fenetre.<init>(Fenetre.java:28)
    at Fenetre.main(Fenetre.java:45)


    je sais pas exactement ce que ça veut dire, je suis encore débutant en java..
    comme quoi, la stack trace était plus qu'utile, voire indispensable.

    ce n'est pas du tout une erreur my-sql mais une erreur d'index de cellules de tableau

    voilà l'extrait de code ou sa plante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object[][] data = new Object [2][2];
             l = 1;
             while(res.next()) {
        data[l][1] = res.getString(1);
        System.out.print(data[l][1]);
        data[l][2]= res.getString(2);
        System.out.print(data[l][2]);
    quand on créé un tableau, on indique le nombre de cellule entre crochet, par exemple :
    ici on crée 2 cellules

    les indexes de ces cellules sont 0 et 1 : en java les index de tableau vont de 0 à n exclus, n étant le nombre de cellules

    donc quand tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data[l][2]= res.getString(2);
    tu essayes de mettre la deuxième colonne de ton résultat dans la troisième colonne de ton tableau qui en a que deux... ce qui génère l'exception ArrayIndexOutOfBoundsException (soit indice de tableau en dehors des bornes...)

    le code correct est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object[][] data = new Object [2][2];
             l = 0;
             while(res.next()) {
        data[l][0] = res.getString(1);
        System.out.print(data[l][0]);
        data[l][1]= res.getString(2);
        System.out.print(data[l][1]);
    rien à voir avec le problème, mais tu devrais par ailleurs déclarer tes variables locales dans les blocks qui les utilisent, comme par exemple l :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object[][] data = new Object [2][2];
             int l = 0;
             while(res.next()) {
        data[l][0] = res.getString(1);
        System.out.print(data[l][0]);
        data[l][1]= res.getString(2);
        System.out.print(data[l][1]);
    d'ailleurs tu devrais éviter d'utiliser l : on le confont très facilement avec 1 et parfois ça peut vraiment géner la lecture du code, en particulier quand on cherche pourquoi il marche pas...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    apparemment c’était seulement un problème de cellule, merci infiniment mon ami, j'ai failli devenir fou à cause de cette stupide erreur.
    encore merci

Discussions similaires

  1. problème avec sql designer
    Par artotal dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2006, 16h57
  2. Problèm avec SQL*LOADER
    Par logicave dans le forum Oracle
    Réponses: 2
    Dernier message: 14/07/2006, 17h55
  3. Problèmes avec une JTable
    Par Fab916 dans le forum Composants
    Réponses: 4
    Dernier message: 12/01/2006, 14h11
  4. Quelques problèmes avec SQL SERVEUR (LIKE et caractères)
    Par poussinphp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/09/2005, 09h43
  5. (jsp) problème avec sql qui contient la date
    Par future dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 31/08/2005, 16h18

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