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

Servlets/JSP Java Discussion :

Requête SQL dans un DAO


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut Requête SQL dans un DAO
    Bonjour à tous,

    Je travaille sous eclipse helios, et dans un projet web dynamic j'ai une erreur de compilation de type null.pointer.exception et plus précisément "Nom de colonne incorrect" sur une requète codée dans une classe dao dont le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ResultSet rset = null;
    conn = maconnexion qui est OK et verifée...;
    stmt = conn.createStatement();
    
    // c'est là que ça pêche :
    rset = stmt.executeQuery("SELECT DISTINCT (TO_CHAR(run_date,'YYYY/MM/DD')) " +
    "FROM v_home ORDER BY 1 DESC");
    
    while(rset.next())
    {traitement}...
    Ce que je ne comprend pas, c'est que cette même requète me retourne bien le résultat attendu lorsque que je l'execute dans sql developper.

    Je ne vois pas où est l'erreur, quelqu'un connaîtrait-il la solution ?

    D'avance merci

  2. #2
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Modifies ta requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT (TO_CHAR(run_date,'YYYY/MM/DD')) as monChamp
    et dans la récupération, tu fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultSet.get("monChamp");
    Tu n'as pas posté le reste du code. Le problème vient, je pense, du fait que essaies de récupérer le champ avec son nom run_date. Hors ce n'est le nom que retourne la requête car tu as une opération dessus (to_char). tu as donc besoin de lui définir un nom spécifique que tu utiliseras pour récupérer sa valeur.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select nom from table;
    resultset.get("nom"); => OK
     
    select to_char(nom) from table;
    resultset.get("nom") => ko
     
    select to_char(nom) as nom from table;
    resultset.get("nom") => ok
    J'espère que c'est à peut près clair.

    Dans le pire des cas, tu peux récupérer le champ par index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultset.get(1)  => les index commencent à 1 il me semble, pas à 0

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut
    Merci pour ta réponse FlorentB !

    alors avec tes indications , ce code fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rset = stmt.executeQuery("SELECT DISTINCT (TO_CHAR(run_date,'YYYY/MM/DD')) as aliasRunDate FROM V_HOME ORDER BY 1 DESC");
    ...
    while(rset.next()){
    runDate = rset.getString("aliasRunDate");
    ...}
    J'avais également réussi à contourner ce problème, ayant compris que cela était lié au reformatage de ma valeur (le TO_CHAR...), avant d'avoir eu ta réponse, en faisant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rset = stmt.executeQuery("SELECT DISTINCT RUN_DATE FROM V_HOME ORDER BY 1 DESC");
    ...
    while(rset.next()){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    sqlRunDate = rset.getDate("RUN_DATE");
    runDate= sdf.format(sqlRunDate).toString();
    ...}
    Mais cela fait plus de lignes de code certes

    Bon week-end.

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

Discussions similaires

  1. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02
  2. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08
  3. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  4. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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