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 :

[JDBC / Oracle / Swing] Problème de tri


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut [JDBC / Oracle / Swing] Problème de tri
    Bonjour tous le monde,

    Je suis sur une application en Swing qui se connecte à Oracle via JDBC.
    Mon probleme pour etre succint.
    J'ai un Jtable qui me recupere toute les informations de la base et qui m'affiche tout ça sous forme d'un jolie tableau.
    Dans ma base tout les champs sont en varchar2(Gros probleme car il y'a des champs qui sont en integer).
    Dans mon tableau(Jtable) quand je demande de faire un tri par ordre croissant il m'affiche un resutat erroné.
    exemple: j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1
    12
    2
    3
    5
    13
    quand je demande le tri il m'affiche ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1
    12
    13
    2
    3
    5
    donc 12 et 13 qu passent avant le reste.
    donc je voudrai savoir comment faire pour qu'il me fasse un bon tri(bémol je n'ai pas le droit de changer le type du champ dans la base car elle est veille et y'a d'autres applications qui requetent dessus).
    Merci

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    ce comportement est normal car la comparaison s'effectue caractère par caractère et donc 2 est bien supérieur a 1 et aussi au 1 de 12 ....
    donc pour résoudre ton problème tu dois implémenter toi même le 'comparator' et demandé le tri avec ce comparateur !

    tu dois donc faire une implémentation de l'interface java.util.Comparator et dans la méthode compare faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return Integer.valueOf(string1).compareTo(Integer.valueOf(string2));
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    Merci Alkhan,

    Peut être que j'ai oublié un élément important.
    Quand je demande a ma Jtable de faire un tri sur un champ, mon appli refais un select pour aller requêter sur Oracle avec un order by(nomColonne).
    donc je ne sais pas si ce que tu me proposes est toujours valable ou pas?
    Merci d'avance.
    Cordialement

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par tifsa Voir le message
    J'ai un Jtable qui me recupere toute les informations de la base et qui m'affiche tout ça sous forme d'un jolie tableau.
    ...
    Dans mon tableau(Jtable) quand je demande de faire un tri par ordre croissant il m'affiche un resutat erroné.
    Cela laisse en effet pensé que tu effectue le tri en mémoire et non dans la requête !

    Citation Envoyé par tifsa Voir le message
    Peut être que j'ai oublié un élément important.
    Quand je demande a ma Jtable de faire un tri sur un champ, mon appli refais un select pour aller requêter sur Oracle avec un order by(nomColonne).
    Bien sur qu'il était important de le préciser, il est impossible de le deviner sans que tu le dises !

    Citation Envoyé par tifsa Voir le message
    donc je ne sais pas si ce que tu me proposes est toujours valable ou pas?
    et bien en fait, cela dépend si dans ton tableau tu as le résultat complet de ta requête, ou non. En général, ce n'est pas le cas !
    Dans ce cas la il faut obligatoirement faire le tri en base.

    Tu as donc deux possibilités :
    - le champs contiens que du numérique alors tu peux faire --> order by TO_NUMBER(maColonne)
    - le champs contiens de l'alphanumérique alors il faux faire --> order by LPAD(maColonne, nbCharAretourner)
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    Bonjour

    Merci pour tes reponses.
    C'etais la solution.
    J'ai mis bcp de temps pr comprendre.

    Bonne journéee

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'utilisation du driver JDBC Oracle
    Par sweeton dans le forum Websphere
    Réponses: 0
    Dernier message: 30/03/2009, 17h11
  2. Problème drivers Jdbc/Oracle
    Par kalikut dans le forum JDBC
    Réponses: 2
    Dernier message: 17/08/2007, 15h05
  3. JBuilder 2005 et Oracle 9i-> Problème JDBC drive
    Par Devil666 dans le forum JBuilder
    Réponses: 1
    Dernier message: 04/04/2005, 14h14
  4. [SWING] Problème de rafraichissement
    Par david71 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/05/2004, 15h38
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44

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