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 :

Protéger la récupération de données


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Protéger la récupération de données
    Bonjour à tous!

    voilà, j'ai une question relativement simple pour les expérimentés:

    Je fait une requête SQL où je retiens 2 champs. Ces champs sont mis dans une map. La première valeur est une clé primaire, la deuxième est un nombre de type integer.

    Ma ligne de code pour la récupération est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mp.put(new Integer(rs.getInt(1)),new Integer(rs.getInt(2)));
    Un petit problème cependant.... la base de donnée que j'utilise pourrait accepter autre chose qu'un type entier. Autrement dit, le deuxième champs pourrait ne pas être un nombre. Du coup, je me retrouverais avec une exception Value can not be converted to requested type.

    Comment je peux tester la valeur du deuxième champs? Est-ce avec un try catch?
    Est-ce qu'il y a une meilleure façon?

    Merci!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 209
    Points
    209
    Par défaut
    Salut,

    Avec quelque chose comme ca, ca devrait faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        public boolean isInteger(String str)
        {
            try
            {
                Integer.valueOf(str);
                return true;
            }
            catch (NumberFormatException e)
            {
                return false;
            }
        }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci @Ikey pour ta réponse!

    Donc, si je comprends bien, la seule façon de tester un entier est de :

    1- Convertir la valeur du rs (recordset) en String
    2- Tester si cette valeur peut être une Integer
    3- Si True (Integer), on fait la conversion

    Il n'existe pas une méthode qui permet de faire ce genre de conversion en une ligne?

    Merci encore!

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par debian_seb Voir le message
    Merci @Ikey pour ta réponse!

    Donc, si je comprends bien, la seule façon de tester un entier est de :

    1- Convertir la valeur du rs (recordset) en String
    2- Tester si cette valeur peut être une Integer
    3- Si True (Integer), on fait la conversion

    Il n'existe pas une méthode qui permet de faire ce genre de conversion en une ligne?
    C'est de l'informatique, pas de la magie.

    Et à vrai dire je ne comprends pas ce que tu cherches à faire. Dans une BDD chaque colonne ne peut avoir qu'un type. Soit c'est un entier (INT, BIGINT, etc.), soit c'est autre chose.
    Donc si tu modifies ta colonne ca ne marchera jamais puisque tu ne récupéreras jamais un entier.
    Il est impossible d'avoir un entier de temps en temps au milieu d'autres types.

    Et puis ca serait une bien drole d'idée de changer le type d'une colonne après avoir créer une application. Le nom d'une personne sera toujours une chaine et son age toujours une chaine (ce n'est qu'un exemple parmi tant d'autres)

    Après si tu as peur de récupérer une mauvaise colonne je te conseille d'utiliser son nom "rs.getInt("nom_de_la_colonne");" et c'est plus clair, comme ca on sait ce qu'on récupère

    De toute facon, le getX(indice) est une mauvaise idée quelque soit la situation.
    Si tu fais un select avec les champs identifiés (SELECT toto, titi, tata, tutu, tete FROM foo), il faut compter pour savoir lequel c'est.
    Si tu fais un select avec '*', c'est encore moins pratique puisqu'il faut aller voir les champs que contient la table.
    ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Il est impossible d'avoir un entier de temps en temps au milieu d'autres types.
    Filemaker pro 9.... tu connais?

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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