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 :

je cherche a créer un vecteur a partir d'une base de donnée


Sujet :

JDBC Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut je cherche a créer un vecteur a partir d'une base de donnée
    salut mes amis et merci de bien vouloir m'aider
    j'ai une base de donnée avec des enregistrement avec deux colonne transaction et code article
    je cherche comment je dois mettre les enregistrement de la colonne code article apres éliminer les doublons dans un vecteur
    car ça me servis à mon TP

    la suite sera comme ça apres avoir le vecteur par exemple TAB
    for(int i=1;i<10;i++)
    while(resultat.next()){
    String nom=resultat.getStrng("code article ");
    if (nom.equals(TAB[i])==true)
    j++;



    comme vous voyez je ne sais pas comment créer le vecteur apartir de ma base de donnée


    merci d'avance

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Déjà l'utilisation d'un Vector n'est utile que dans une version Concurrente (avec des thread).

    De plus tu as des collections qui gère déjà les doublons. Les Set.

    Au lieu de t'embêter à chercher les doublons, tu devrais plutôt insérer tes données dans un Set. Si la clé n'existe pas c'est inséré sinon ça passe au suivant ...

    Essaye et montre nous ton code (car vu celui de ton message, tu vas surement nous poser qques questions encore ... )

    Bon courage
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    MERCI AMI mais je n'ai pas compris bien ce que tu as voulu dire
    voici mon code
    package aa;

    import java.awt.*;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import java.lang.*;
    import javax.swing.table.*;

    public class TableFromDatabase extends JFrame
    {
    public TableFromDatabase()
    {
    String url = "jdbc:mysql://localhost/test";
    String userName = "root";
    String password = "19dfdf05";

    try
    {
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    conn = DriverManager.getConnection(url, userName, password);
    System.out.println("Connected");

    Statement instruction = conn.createStatement();
    String sql="select DISTINCT code from allo";
    ResultSet resultat = instruction.executeQuery(sql);

    int i =1;
    String tab[]={};
    while (resultat.next()){
    String nom=resultat.getString("code");
    while (i<3)
    {
    tab[i]=nom;
    i++;
    }
    }

    System.out.println("le valeur "+tab[2]);

    }
    catch(Exception e)
    {
    System.out.println( e );
    }

    // Create table with database data






    }

    public static void main(String[] args)
    {
    TableFromDatabase frame = new TableFromDatabase();
    frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
    frame.pack();
    frame.setVisible(true);



    }
    }

    alors un message d'erreur java.lang.ArrayIndexOutOfBoundsException: 1

  4. #4
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    C'est quand tu veux que tu te décides à utiliser pour mettre ton code dans ces balises afin que se soit plus lisible

    Sinon tant que j'y suis, il faudra m'expliquer cette ligne
    et ce bloc aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while (resultat.next())
    {
       String nom=resultat.getString("code");
       while (i<3)
       {
          tab[i]=nom;
          i++;
       }
    }
    Comme je te l'ai dit, tu sembles manquer de base sur la programmation en Java et ce n'est pas t'aider que de te filer le code tout prêt ainsi que les corrections. Je veux bien t'aiguiller et te signaler les erreurs mais un conseil : apprends, plonge toi dans les tutoriaux, les cours, les notions, tu t'en sortiras mieux
    "Le calendrier, c'est la bureaucratie du temps." Quino

  5. #5
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    MERCI et centent toujours te revoir
    je vais t'expliquer

    j'ai essayer de créer une tableau et je l'ai initialisé vide car je cherche a mettre des valeurs dans le tableau par la suite
    c'est pour ça j'ai mis String tab[]={};


    le deuxième cas c'est de remplir le tableau par les enregistrement qui se trouve dans la base de donnée alors j'ai utilisé
    while (resultat.next())
    {
    String nom=resultat.getString("code");

    et pour faire l'affectation au tableau j'ai mis
    while (i<3)
    {
    tab[i]=nom;
    i++;
    }

    le 3 just pour parcourir le tableau

    mais cette méthode n'a pas marché car j'ai message d'erreur

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par ulysse031

    j'ai essayer de créer une tableau et je l'ai initialisé vide car je cherche a mettre des valeurs dans le tableau par la suite
    c'est pour ça j'ai mis String tab[]={};
    pour le tableau c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] tab = new String[10]; // initialisé à 10
    String[] tab2;  // pas initialisé
    (woah trop bien ces balises CODE )

    De plus dans ton cas, tu ne sais pas quelle taille va faire ton tableau. La solution à ça s'appelle les Collections.
    Je te conseille de te renseigner la dessus. (et plus particulièrement sur les Set dans ton cas). Un petit tutoriel sur les Collections serait surement bénéfique pour ton apprentissage de Java. C'est une des bases incontournable.


    Citation Envoyé par ulysse031
    et pour faire l'affectation au tableau j'ai mis
    while (i<3)
    {
    tab[i]=nom;
    i++;
    }
    Tu as le message d'erreur puisque ton tableau est "initialisé" à vide.
    Ici ton cherches à mettre le même nom dans les 3 premières cases de ton tableau

    En utilisant une collection, tu n'as pas à te soucier de la taille. Tu fais juste un add() et hop ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut merci ami tu es gentil merci encore de tout je viens de lire la partie Collections en Java : Prise en main. je vais encore relire pour mieux comprendre merci pour cette information
    tu m'as aidé a m'avancer sur mon code merci
    mais désolé encore j'ai encore un message d'erreur j'ai ajouté une partie dans le code qui fait la comparaison de chaque élément de la base de donnée avec élément de tableau


    Statement instruction = conn.createStatement();
    String sql="select DISTINCT code from allo";
    ResultSet resultat = instruction.executeQuery(sql);

    int i =1;
    String tab[]=new String[10];
    while (resultat.next()){
    String nom=resultat.getString("code");


    tab[i]=nom;
    i++;

    }


    int d=1;
    String s="select * from allo";
    ResultSet resulta = instruction.executeQuery(s);

    for( i=1;i<10;i++){
    while (resultat.next()){
    String n = resultat.getString("code");
    if (tab[i] == n) {
    d++;
    System.out.println("le nombre de "+tab[i]+d);
    }
    }
    }


    le message d'erreur :java.sql.SQLException: Operation not allowed after ResultSet closed

    merci encore

  8. #8
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    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
    Statement instruction = conn.createStatement();
    String sql="select DISTINCT code from allo";
    ResultSet resultat = instruction.executeQuery(sql);
     
    int i =1;
    String tab[]=new String[10];
    while (resultat.next()){
    String nom=resultat.getString("code");
     
     
    tab[i]=nom;
    i++;
     
    }
     
     
    int d=1;
    String s="select * from allo";
    ResultSet resulta = instruction.executeQuery(s);
     
    for( i=1;i<10;i++){
    while (resultat.next()){
    String n = resultat.getString("code");
    if (tab[i] == n) {
    d++;
    System.out.println("le nombre de "+tab[i]+d);
    }
    }
    }
    si c'est bien ton code exact :
    il manque un "t" => ResultSet resulta = instruction.executeQuery(s);
    et apres tu utilises "résultat" (avec un t ) variable qui est fermée à priori ....


    Pitié : mets ton code entre les balises [code ] [/code] ... c'est beaucoup plus lisible ...
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  9. #9
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par je disais dans mon premier message
    Au lieu de t'embêter à chercher les doublons, tu devrais plutôt insérer tes données dans un Set. Si la clé n'existe pas c'est inséré sinon ça passe au suivant ...
    ce n'est pas la peine de voir si tu l'a déjà inséré. La collection Set te fais ça gratos ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  10. #10
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    j'ai trouvé l'erreur mais problème avec l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for( i=1;i<10;i++){
    while (resultat.next()){
    String n = resultat.getString("code");
    if (tab[i] == n) {
    d++;
    }
    }
    System.out.println("le nombre de "+tab[i]+d);
    }
    par exemple au leiu de m'affiché tab[A]=2 et tab[B]=3
    un probleme avec d++; alors j'ai tab[A]=1e tab[B]=1

  11. #11
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben oui c'est normal !

    pour chaque élément du tableau
    parcours des resultats
    ajout de la valeur dans l'élément courant (écrase la valeur précédente)


    Et puis arrête avec ce !@#{ de tableau
    La solution avec les collections est beaucoup plus simple !

    en gros (à toi de l'adapter avec un Set si tu ne veux pas de doublon)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList<String> mesValeurs  = new ArrayList()<String>
    while(resultat.next())
         mesValeurs.add(resultat.getString(1)); // c'est mieux que de passer par le nom de colonne
    et hop c'est tout

    Après si tu veux vraiment utiliser un tableau, il est possible de transformer facilement une collection en un tableau avec la classe Array (ou Arrays je sais jamais)
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  12. #12
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    désolé je n'ai pas bien compris meme si j'utilise arraylist j'aurais la meme chose car la boucle while (resultat.next()) parcourir qu'une seul fois le probleme comment je dois parcouri while (resultat.next()) plusieurs fois pour faire la comparaison a chaque fois le i incrémente

  13. #13
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    est ce que tu lis les message ??

    utilise un set et tu n'auras pas besoin de gérer les doublons.

    A vrai dire si tu places un DISTINCT dans ta requete, ça devrait revenir au même non ?

    A vrai dire je sais même plus ce que tu cherches à faire

    Ya des bon tutos sur jdbc qui à mon avis utilisent des Collections. tu devrais en faire .. ça te prendrait 1 heure mais ça t'en feras gagner des dizaines pour la suite ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  14. #14
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    ce que je cherche dans mon code j'ai une colonne "code" avec A B A C E A
    alors j'ai fait un DISTINCT pour éliminer les doublons puis j'ai mis le résulat dans un tableau tab et tu m'as donnée une idéee d'utiliser arraylist j'ignore ça je coince je viens de lire un tutorial je cherche un exemple comment faire ça pour mieux comprendre

    apres j'ai essayé de comparer chaque élément de tableau tab avec les élément de la colonne base de donnée code pour compter le nombre de fois dans la base de donnée par exemple A 3 fois
    le probleme que si j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for( i=1;i<10;i++){
    while (resultat.next()){
    String n = resultat.getString("code");
    if (tab[i] == n) {
    d++;
    }
    }
    System.out.println("le nombre de "+tab[i]+d);
    }
    la boucle while ne marche qu'une seul fois c'est pour ça j'aurais par exemple A 3 et B 1 et C 1
    comment utiliser la boucle while plusieurs fois dans la boucle for

  15. #15
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Points : 2 232
    Points
    2 232
    Par défaut
    Ce que tu veux c'est faire remonter ton recordSet au premier élément??
    mais jsuis pas sur de comprendre ce que tu veux faire ni comment tu veux le faire?
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    SELECT distinct(id_truc) from bidule

  17. #17
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    voici cette partie
    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
     
            Connection conn = null;
            String url = "jdbc:mysql://localhost/test";
            String userName = "root";
            String password = "11405";
     
            try
            {
              Class.forName("org.gjt.mm.mysql.Driver").newInstance();
              conn = DriverManager.getConnection(url, userName, password);
              System.out.println("Connected");
     
              Statement instruction = conn.createStatement();
              String sql = "select DISTINCT code_article  from test";
              ResultSet resultat = instruction.executeQuery(sql);
     
              int i = 1;
              String tab[] = new String[1000000];
              while (resultat.next()) {
                String nom = resultat.getString("code_article");
     
                tab[i] = nom;
                i++;
     
              }

    je veux utiliser les arraylist pour créer un tableau car dans mon code j'ai inicialisé le tableau avec 1000000 mon tableau n'ai pas dynamique

  18. #18
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par ulysse031
    je veux utiliser les arraylist pour créer un tableau car dans mon code j'ai inicialisé le tableau avec 1000000 mon tableau n'ai pas dynamique
    ben je te l'ai donné le bout de code qui le fait non ? -> à 16h45 le 13
    je peux pas faire mieux ...

    -> tu parcours ton resultset et tu mets le code dans l'arrayList (cf le code dont je te parle)

    ensuite, si tu veux absolument un tableau, tu transforme cette ArrayList en tableau en te servant de la javadoc et de mon message de 16h45 également.

    Toutes les réponses t'ont été données. T'as qu'à copier-coller ... je vois pas comment on pourrait plus t'aider
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  19. #19
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    NON AMI tu m'as compris mal je n'arrive pas a comprendre les arraylist je cherche un tutorial qui peut m'aider mais je m'avance pas sur cette partie

  20. #20
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Points : 2 232
    Points
    2 232
    Par défaut
    Une ArrayList est un tableau dynamique, tu la crée et tu ajoute des éléments comme in te l'a montré. Pour récupérer un élément tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maListe.get(indice);
    si tu as besoin de plus d'infos tu ouvre la javadoc tu trouvera tout ce qui te faut
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/06/2015, 11h09
  2. Créer des cube a partir d'une base de données (oracle) avec talend
    Par tahabers dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 18/02/2015, 11h30
  3. Réponses: 3
    Dernier message: 22/03/2009, 17h47
  4. [MySQL] créer un tableau à partir d'une base de donnée
    Par bastien dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/01/2009, 15h03
  5. Créer des clés informatiques à partir d'1 base de données??
    Par Flateric dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 11/02/2005, 07h49

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