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

Langage Java Discussion :

Problemes avec les caractères 'espace' !


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut Problemes avec les caractères 'espace' !
    Salut tout le monde...
    Alors voila...en cette approche de week end ( ) je suis confronté à un petit souci qui m'embete bien...
    Je m'explique,
    J'ai dans une une base de données, une table contenant diverses informations (nom adresse société etc...). Je dois ressortir ces données pour les mettre dans une chaine de caractère...toutes a la suite, collées les unes aux autres. Chaque attribut a une taille donnée, et lorsqu'un attribut n'est pas renseigné, c'est une suite de 0 pour les numériques et une suite d'espace pour les caractères. Et le problème est que lorsque je les extrait de la BD pour les mettre dans ma chaine, les attributs alphabétiques non renseignés(donc des espaces) n'apparaissent pas!
    un exemple (en disant que * est un espace,sinon ça marche pas a l'affichage sur le forum!!!)
    Nom (10 caractères) : toto
    Prenom (10 caractères) : titi
    Société (5 caractères) :
    Telephone(10caractere):0000000000
    Quand j'extrait ces données, j'obtiens la chaine suivante :
    toto******titi******0000000000
    alors que je voudrais obtenir celle-ci:
    toto******titi***********0000000000

    Voila, j'espere que vous comprendrez mon probleme, et que vous pourrez m'aidez...parceque la je suis bien embété (pour etre poli )

    Merci beaucoup pour votre aide.

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Salut,

    Tu les recuperes comment t'es données de la base de données?
    Peux-tu mettre ton code que je puisse t'aiguiller?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Je récupère mes données dans la BD de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ResultSet lesdecenr = stmt2.executeQuery("SELECT * FROM DEC_ENR WHERE CAS_NUM = "+ casnum);
    	        while (lesdecenr.next()) {
    	        	//on recupere la composition de la partie fixe du dec-enr
    	        	int i = 3;
    	        	while (i<=121) {
    	        		contenupartiefixe = contenupartiefixe + lesdecenr.getString(i);
    	        		i = i+1;
    	        	}
    }

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Arrives-tu as debugger ton programme.
    En faite il faudrait savoir si quand lesdecenr contient null, donc dans ton exemple, quand la société n'est pas rempli, ce que te donne

    lesdecenr.getString(i);

    Si tu ne sais pas debugguer, fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("|"+lesdecenr.getString(i)+"|");
    Dans ton while et regarde si "||" apparait ou non.

  5. #5
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Autre question quelle BDD utilises tu?

  6. #6
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Apparemment dans son cas la donnée n'est pas null mais chaîne vide dans la base. Ce qui veut dire que la base gère mal les chaînes vides qui n'ont pas une taille fixe contrairement aux autres valeurs .... Potentiellement tu risques de devoir gérer ce cas de manière algorithmique.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par maxf1
    Arrives-tu as debugger ton programme.
    En faite il faudrait savoir si quand lesdecenr contient null, donc dans ton exemple, quand la société n'est pas rempli, ce que te donne

    lesdecenr.getString(i);

    Si tu ne sais pas debugguer, fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("|"+lesdecenr.getString(i)+"|");
    Dans ton while et regarde si "||" apparait ou non.
    j'ai essayé ton truc et lorsque je le lance j'obtiens bien || alors que normalement j'ai une chaine de caractère de 8 espaces...

    et j'utilise une base mysql...

    C'est vrai que ce n'est pas impossible que ce problème vienne bien de la base de données...pourtant quand j'ai une chaine de 8 caractères et que l'attribut ne contient que 4 caractères différents de espace, les 4 caractères suivant (qui eux sont bien des espaces) sont bien pris en compte...

  8. #8
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    C'est quoi le type de tes champs en base ?
    Tu es sûr que c'est mysql qui assure le formatage en nombre de caractères et pas simplement que dans le cas d'une donnée sur 4 caractères stockée dans un champ à 8 on a ajouté 4 espaces lors du stockage ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Pour les variables de 4 caractères stocké sur 8, c'est la saisie des données qui fait qu'on rajoute les caractères espace...au niveau base mes varaibles sont stockées sont formes de varchar(8) - pour une variable de 8 caractères - et j'ai remarqué que lorsque je les stockais en utilisant le type text les espaces étaient pris en compte...mais pas avec varchar...
    je fais encore chercher un peu mais si je ne vois pas de solution, je vais remplacer les espaces par '*' avant l'enregistrement dans la BD et puis je ferais l'inverse quand je ressortirais les données...

  10. #10
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Oui cela vient de ta base et de l'enregistrement de tes champs dans la base de données. Pourquoi ne pas mettre tes champs avec des espaces dans ta base, il devrait resortir avec les espaces, nan?

    Pourquoi t'embeter avec des '*'

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Non...une fois passé par la base les 'suites d'espace' sont supprimés...
    Si j'enregistre 8 espaces dans ma base il me renvoi un champ null...alors que moi je voudrais 8 espaces...avec les etoiles, il me renvois 8 etoiles que je remplace ensuite par 8 espaces...et la j'ai mes 8 espaces...

  12. #12
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Peut-etre que cela pour etre changer, si par exemple tu lui dit que le champs ne peut etre null.
    Je ne sais pas si c'est parametrable, mais peut-etre y a-t-il une option qui lui permet de savoir que si ce n'est que des espaces que ce soit null, donc voir si une tel option existe pour "desactiver".

    Sinon oui tu seras obliger de passé par un caractere autre que le null...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    ouais je crois que c'est ca le probleme...
    mais pour l'instant j'ai pas trouvé le truc...alors ce sont les etoiles qui prennent l'interim!!

Discussions similaires

  1. Problem avec Les Caractères échappes
    Par namcoarcad dans le forum Langage
    Réponses: 8
    Dernier message: 15/02/2015, 13h40
  2. probleme avec les chaines de caractères
    Par Mr_Nouyes dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 25/01/2013, 17h41
  3. Réponses: 3
    Dernier message: 19/02/2010, 15h37
  4. Xdoclet probleme avec les caractères"<" et ">"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/04/2007, 15h26
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 01h18

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