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 SQL Discussion :

Probleme SQL prepareStatement JAVA


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut [RESOLU] Probleme SQL prepareStatement JAVA
    Ma requete preparestatement avec le parametre categorie_immo.TYPE_M= ? me retourne un resultset vide alors que la valeur passe est bien U (setString(2,"U");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  SUM(bien.t60 ) valeurDeclaree, categorie_immo.CODE_REGROUPEMENT codeRegroupement, to_char(bien.DATE_MISE_EN_SERVICE_BIEN,'YYYY') annee FROM bien, categorie_immo  WHERE bien.code_categorie=categorie_immo.code_categorie  AND bien.CODE_SITE_GCP= ?  and categorie_immo.TYPE_M= ?  Group by categorie_immo.CODE_REGROUPEMENT, to_char(bien.DATE_MISE_EN_SERVICE_BIEN,'YYYY')
    alors que si je met en dur le resultset n'est pas vide...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  SUM(bien.t60 ) valeurDeclaree, categorie_immo.CODE_REGROUPEMENT codeRegroupement, to_char(bien.DATE_MISE_EN_SERVICE_BIEN,'YYYY') annee FROM bien, categorie_immo  WHERE bien.code_categorie=categorie_immo.code_categorie  AND bien.CODE_SITE_GCP= ?  and categorie_immo.TYPE_M= "U"  Group by categorie_immo.CODE_REGROUPEMENT, to_char(bien.DATE_MISE_EN_SERVICE_BIEN,'YYYY')
    je vois pas le probleme.

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    Tu peux mettre ton code JAVA , ce n est pas le bon forum mais ca aidera à mieux comprendre, car la ca a l air corrcet

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    si ca peut aider mais le code java est classique ou alors je suis aveugle.

    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
    public static ArrayList getLstCumulValeurDeclarerParRegroupementParAnnee(String codeSite,String codeTypeModele) throws SQLException {
    			DeclarationByRegroupementByAnnee de = null;
    			ArrayList lstResult = new ArrayList();
    			String sqlRequest = null;
    			PreparedStatement pstmt = null;
    			ResultSet rs = null;
     
    			Connection conn = null;	
    			try {
    	         conn = DAO.getConnection();			
    				sqlRequest = REQUETE_LISTE_REGROUPEMENT_CUMULVALEURDECLARER_ANNEE;
     
    				pstmt = conn.prepareStatement(sqlRequest);
    				pstmt.setString(1,codeSite.trim());
    				pstmt.setString(2,codeTypeModele.trim());
     
    				pstmt.executeQuery();
    				rs = pstmt.getResultSet();
     
    				//parcours des résultats
    				while (rs.next()) {
    				    de = new DeclarationByRegroupementByAnnee();
    				    de.setCumulValeurDeclarer(new Long(rs.getLong("valeurDeclaree"))); 
    				    de.setAnnee(rs.getString("annee"));
    				    de.setCodeRegroupement(rs.getString("codeRegroupement"));
     
    				    lstResult.add(de);
    				}
     
    			} catch (SQLException e) {
    				_log.error("DeclarationDAO.getLstCumulValeurDeclarerParRegroupementParAnnee() : erreur technique", e);
    				throw e;	
    			} finally {
    				DAO.closeRessources(conn,pstmt,rs);	
    			}
    			return lstResult;
    		}

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    Me dis pas que REQUETE_LISTE_REGROUPEMENT_CUMULVALEURDECLARER_ANNEE est une constante ?

    Mets ta requete en string directement dans sqlRequest et testes

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par romano21
    Me dis pas que REQUETE_LISTE_REGROUPEMENT_CUMULVALEURDECLARER_ANNEE est une constante ?

    Mets ta requete en string directement dans sqlRequest et testes
    euh je vois pas ce que ca change... mais j'ai teste et ca change rien...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    Tu as testé ce ke te renvoi vraiment codeSite.trim() ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par romano21
    Tu as testé ce ke te renvoi vraiment codeSite.trim() ?
    oui en mode debug j'affiche les valeurs et elles correspondent...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    rs = pstmt.executeQuery(); 
    while(rs.next())
    {
      //traitement
    }
    Alors après si ca ca marche pas je ne vois vraiment pas !!!

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par romano21
    essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    rs = pstmt.executeQuery(); 
    while(rs.next())
    {
      //traitement
    }
    Alors après si ca ca marche pas je ne vois vraiment pas !!!
    rien a faire ca veut pas... on a pris une solution temporaire decomposer la requete en plusieurs requete en attendant...
    au retour des vacances yaura d'autres developpeurs on regardera ca je posterai si on trouve la solution.

    merci.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Ton code JAVA semble correcte.
    L'erreur vient sans doute venir d'une erreur dans le passage des parametres.
    Param en MAJ, T'a pas inverser les 2 params ?

    @+

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par ggfabi
    Ton code JAVA semble correcte.
    L'erreur vient sans doute venir d'une erreur dans le passage des parametres.
    Param en MAJ, T'a pas inverser les 2 params ?

    @+
    non ils sont pas inverse c'est pour ca que je pensai que ca pouvait venir d'un truc sur la bdd mais la requete avec toad ne pose pas de probleme.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    c fou ton truc !!!
    Et si tu fais ca :

    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
     
    public static ArrayList getLstCumulValeurDeclarerParRegroupementParAnnee(String codeSite,String codeTypeModele) throws SQLException {
             DeclarationByRegroupementByAnnee de = null;
             ArrayList lstResult = new ArrayList();
             String sqlRequest = null;
             PreparedStatement pstmt = null;
             ResultSet rs = null;
     
             Connection conn = null;   
             try {
                conn = DAO.getConnection();         
                sqlRequest = "SELECT * FROM bien, categorie_immo  WHERE bien.code_categorie=categorie_immo.code_categorie  AND bien.CODE_SITE_GCP= ?  and categorie_immo.TYPE_M= ?";
     
                pstmt = conn.prepareStatement(sqlRequest);
                pstmt.setString(1,codeSite.trim());
                pstmt.setString(2,codeTypeModele.trim());
     
                rs =  pstmt.executeQuery();
     
     
                //parcours des résultats
                while (rs.next()) {
                    de = new DeclarationByRegroupementByAnnee();
                    de.setCumulValeurDeclarer(new Long(rs.getLong("valeurDeclaree")));
                    de.setAnnee(rs.getString("annee"));
                    de.setCodeRegroupement(rs.getString("codeRegroupement"));
     
                    lstResult.add(de);
                }
     
             } catch (SQLException e) {
                _log.error("DeclarationDAO.getLstCumulValeurDeclarerParRegroupementParAnnee() : erreur technique", e);
                throw e;   
             } finally {
                DAO.closeRessources(conn,pstmt,rs);   
             }
             return lstResult;
          }
    Essaye ca !!!
    Si ca marche pas tu mets en dur directement au lieu de var.trim()
    Le type de categorie immo.TYPE_M est bien une variable string dans ta base ?
    Et normalement ca doit marcher !!
    La vache, je crois que j ai vu l'erreur.
    Je pense que ca vient de tes cotes dans ta requete !!! dans le to_char (...,'YYYY')

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    c'etait bien un probleme SQL.

    ma string typeModele en java est = "U" or dans ma base ce n'est pas un varchar2(3) mais un char(3) alors dans ma base le typeModele est = à "U " (a l'insertion du modele il m'a rajoute 2 espaces a la fin)

    et vous avez devine comme je faisait un trim en java ct mort !!!

    par contre TOAD il s'en fout la requete que je mette "U" ou "U " il retourne tjs des resultats.

    surement la gestion du preparestatement en java...

    merci pour tout.

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

Discussions similaires

  1. Probleme de date entre sql est java
    Par logiciel_const dans le forum SQL
    Réponses: 7
    Dernier message: 31/01/2011, 11h20
  2. Réponses: 4
    Dernier message: 25/05/2009, 15h44
  3. Problem SQL et JBuilder(JAVA)
    Par rez72 dans le forum Langage SQL
    Réponses: 0
    Dernier message: 29/11/2007, 19h00
  4. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32
  5. SQL Server: Java Erreur Socket
    Par BenoitM dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2003, 16h32

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