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 :

[Debutant]Problème de récupération des données


Sujet :

JDBC Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut [Debutant]Problème de récupération des données
    Bonjour,

    voila mon souci, je suis en ce moment sur la réalisation d'un logiciel de communication interservices. Chaque service peut ainsi adresser des demandes à ces services voisins...du genre demande d'intervention de la maintenance ou autre...

    Les gens remplissent donc un formulaire avec une description de la demande qui peut faire 10 mots ou 200 mots ou plus certaine fois...

    Je n'ai aucun problème pour stocker ces demandes dans la base mais j'ai un SQLexception lorsque je vais chercher les demandes qui ont une description de plus de 255 caractères (et oui j'ai compté...). Je suppose que c'est un problème de format de paramètre ou qq chose comme ca...

    Si quelqu'un a une idée...

    Voila mon code:
    Je récupère les données ici et je les retourne à une table
    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
     
     
     public JTable afficheTableau(ResultSet rs)
    	{
     
    		ResultSetMetaData mt;
    		String[] nomsColonnes = null;
    		String[][] donnees = null;
     
    		int i = 0;
    		int nbColon = 0;
    		int nbLign = this.getQuerySize(rs);
    		//return the result
    		rs = this.ask();
    		try 
    		{
    			mt = rs.getMetaData();
    			nbColon = mt.getColumnCount();
    			nomsColonnes = new String [nbColon];
    			for(i = 1 ;i<=nbColon;i++)
    			{
    				nomsColonnes[i-1] = mt.getColumnLabel(i);
    			}
     
    			donnees = new String [nbLign][nbColon];
    			i = 0;
    			while (rs.next ( ))
    			{
    				for(int j = 0 ;j<nbColon;j++)
    				{
    					donnees[i][j] = rs.getString(nomsColonnes[j]);
     
    				}
    				i++;
    			}
    			rs.close();
    		}
    		catch (Exception e) {System.err.println ("Pb SQL");}
    		//build the JTable
                    JTable table = new JTable(donnees, nomsColonnes);
    		table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    		this.deconnectionBDD();
    		return table;
    		}
    ici le code pour interroger 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
     
    private ResultSet ask()
    	{
    		ResultSet rs = null;
    		try 
    		{
    			s.executeQuery (sql);
    			rs = s.getResultSet(); 
     
    		}
    		catch (Exception e) {
                        System.err.println ("Pb SQL (ask)");
                    }
    	  return rs;
    	}
    voila, j'espere que j'ai été claire.

    Merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 161
    Par défaut
    quel base utilises tu et avec quel type pour ta colonne en question dans ta table ?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    desolé j'ai oublié la base...

    C'est une base access...et j'ai configuré la collonne de la table sur "mémo" c'est à dire jusqu' à 65500 caractères...

    De plus, je n'ai aucun souci pour stocker...c'est juste pour récuperer que ca merdouille

    j'espere que c'est ca que tu voulais savoir...

  4. #4
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    http://java.developpez.com/faq/jdbc/...es#tabRelation

    Essaye de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object test = resultset.getObject(nomsColonnes[j]);
    System.out.println(test.getClass());

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Donc avec ton test il me sort :

    class java.sql.timestamp
    class java.sql.timestamp
    class java.lang.String
    class java.lang.String
    class java.lang.String
    class java.lang.String
    class java.lang.String
    class java.lang.String


    voila c'est tout...

    une idée???

    Merci d'avance

  6. #6
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Il nous faut le message d'erreur de ton SQLException !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    catch (Exception e) {e.printStackTrace();}
    Et aussi dans le parcours de ta structure en base (même si je "conseille" pas d'utiliser les Metadata pour) quels sont les types DANS l'ORDRE de tous tes champs de table ?


  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Voila ce qu'il me sort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    java.lang.NullPointerException
            at brialys.Noyau.afficheTableau(Noyau.java:256)
            at brialys.menugeneral.voir_demande(menugeneral.java:280)
            at brialys.menugeneral.access$000(menugeneral.java:14)
            at brialys.menugeneral$1.actionPerformed(menugeneral.java:91)
            at javax.swing.AbstractButton.fireActionPerformed(Unknown Sourc
    En fait , je vous ai dit qu'il me sortait une SQLexception mais je me suis planté...il m'a tjrs sorti cette erreur la...

  8. #8
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Tu n'as plus qu'à regarder la ligne 256 de ta classe Noyau ...

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    je suis desole si je suis un peu un boulet....

    à la ligne 256 de ma classe noyau je fais:

    ResultSetMetaData mt;
    mt = rs.getMetaData();

    >cf fonction affichetableau en haut de page


    et je n'ai tjrs pas d'idée sur le problème...

  10. #10
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    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
    private ResultSet ask()
    	{
    		ResultSet rs = null;
    		try 
    		{
    			rs = s.executeQuery (sql);
    			//rs = s.getResultSet(); // ne doit etre appele qu'une fois et c'est deja le cas dans executeQuery donc renvoie null 
                            
    		}
    		catch (Exception e) {
                        System.err.println ("Pb SQL (ask)");
                    }
    	  return rs;
    	}

  11. #11
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Je vais essayer ta solution mais dans ce cas pourquoi ca marche très bien lorsque les champs font moins de 255 caractères???

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Donc j'ai essayé et toujours le meme souci...meme erreur...

  13. #13
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Vérifie qu'en sortie de "ask" ton resultset ("rs") est NULL ;
    c'est bizarre car dans la JavaDoc de "executeQuery" il est écrit :
    a ResultSet object that contains the data produced by the given query; never null
    Vérifie donc aussi, avec un "printStackTrace" dans le catch de "ask", qu'aucune Exception n'est lancée !

  14. #14
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    En effet, tu as raison, il me lance bien une exception en sortant du ask:

    voila ce qu'il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Le champ
     est trop petit pour accepter la quantité de données que vous voulez ajouter. 
    Essayez de l'inserer ou de coller moins de données.
    Par contre le rs est bien "null" en sortant du ask

    ca te dit qq chose?

    merci d'avance

  15. #15
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Il nous faut ta requête SQL ...

  16. #16
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    voila ma requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ("SELECT DISTINCT [Maintenance].[Date d'emmission], [Maintenance].[delai souhaité], [Maintenance].[service emmeteur],
     [Maintenance].[intitulé], [Maintenance].[niveau de priorité], [Maintenance].[justification priorité], 
    [Maintenance].[Type de demande], [Maintenance].[DescriptionProjet]" + "FROM [Maintenance]" +
     "ORDER BY Maintenance.[delai souhaité] ;");
    ...

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    Citation Envoyé par baboock
    En effet, tu as raison, il me lance bien une exception en sortant du ask:

    voila ce qu'il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Le champ
     est trop petit pour accepter la quantité de données que vous voulez ajouter. 
    Essayez de l'inserer ou de coller moins de données.

    Par contre le rs est bien "null" en sortant du ask


    ca te dit qq chose?

    merci d'avance
    C'est normal, vu qu'il y a une exception dans ta requete. Elle n'est donc pas finie d'executée, ce qui retourne donc bien entendu un null.

    Pour ton problème, il est aussi possible que le driver ne supporte pas le type Memo. Je ne connais pas bien access, mais essaie de trouver un champ plus petit pour tester. Tu as dit que cela fonctionnait avec moins de 255 characteres, mais ton champs était-il toujours de type MEMO ?

  18. #18
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Oui, meme en gardant des champs de type mémo dans ma table, ca fonctionne uniquement quand j'ai moins de 255 caractères...Ce qui est bizarre c'est que j'arrive à rentrer ces donées sans problèmes mais pas à les récuperer...

    peut être dois-je changer de base de données???

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    pas forcement de base de donnée. Essaie peut etre avec un autre driver

  20. #20
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Je crois que je vais pas avoir le choix...apres differents essais j'ai pas de pilote ou ca fonctionne mieux...dans ceux que me proposent XP bien sur...je vais chercher sur le net...

    Merci quand meme pour votre aide...


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2008, 12h02
  2. ADO - Problème de récupération des données
    Par Kloun dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/09/2007, 11h25
  3. [MySQL] problème de récupération des données d'une requête
    Par maniaco_jazz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/02/2007, 12h12
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  5. Réponses: 31
    Dernier message: 27/07/2006, 13h51

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