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 :

PreparedStatement sous DB2, bug ?


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut PreparedStatement sous DB2, bug ?
    bonjour,

    Quelqu'un peut-il m'expliquer pourquoi la fonction position de DB2 ne me retourne pas ce qu'il faudrait quand je la met dans un PreparedStatement.

    NB : IBMREQD et sysibm.sysdummy1 c'est pour l'exemple, pour prendre quelque chose de standard. Dans mon code '?' peut etre chaine vide ou toute autre chaine.

    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
    PreparedStatement prepareStatement = con.prepareStatement("select
    position(? in IBMREQD using OCTETS) as pos from sysibm.sysdummy1");
     
    prepareStatement.setString(1,"");
     
    ResultSet resultSet = prepareStatement.executeQuery();
    while (resultSet.next())
    {
    	System.out.println(resultSet.getInt("pos"));
    }
     
     
    com.ibm.db2.jcc.am.mo: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610,
    SQLERRMC=null, DRIVER=4.7.85
    	at com.ibm.db2.jcc.am.dd.a(dd.java:676)
    	at com.ibm.db2.jcc.am.dd.a(dd.java:60)
    	at com.ibm.db2.jcc.am.dd.a(dd.java:127)
    	at com.ibm.db2.jcc.am.nm.c(nm.java:2493)
    	at com.ibm.db2.jcc.am.nm.d(nm.java:2470)
    	at com.ibm.db2.jcc.am.nm.a(nm.java:1950)
    	at com.ibm.db2.jcc.t4.db.g(db.java:139)
    	at com.ibm.db2.jcc.t4.db.a(db.java:39)
    	at com.ibm.db2.jcc.t4.t.a(t.java:32)
    	at com.ibm.db2.jcc.t4.sb.h(sb.java:135)
    	at com.ibm.db2.jcc.am.nm.gb(nm.java:1921)
    	at com.ibm.db2.jcc.am.om.kc(om.java:2806)
    	at com.ibm.db2.jcc.am.om.b(om.java:3525)
    	at com.ibm.db2.jcc.am.om.Xb(om.java:670)
    	at com.ibm.db2.jcc.am.om.executeQuery(om.java:640)
    	at jdbc.connectDB(jdbc.java:49)
    	at jdbc.main(jdbc.java:14)
    J'ai essayé aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prepareStatement.setNull(1,Types.VARCHAR);
    = meme chose


    Si on tape la requete directement dans le terminal DB2, ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    db2inst1@dev01:~$ db2 "select position('' in IBMREQD using OCTETS) as pos
    from sysibm.sysdummy1"                                                                                     
     
    POS        
    -----------
              1
     
      1 record(s) selected.


    Si on fait ca dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PreparedStatement prepareStatement = con.prepareStatement("select
    position('' in IBMREQD using OCTETS) as pos from sysibm.sysdummy1");
    sans paramètres, ça marche...
    Strange, non?



    J'ai essayé p6spy pour voir la transformation de la requete, ça la transforme bien comme ce que je tape dans le terminal DB2 et qui marche!!

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    résolu en mettant un cast :

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select position(CAST(? AS VARCHAR(4000)) in FIRSTNME using octets) from employee

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

Discussions similaires

  1. [Modélisation] Reverse-engineering sous DB2
    Par ghohm dans le forum Outils
    Réponses: 4
    Dernier message: 18/09/2007, 17h44
  2. Réponses: 4
    Dernier message: 24/03/2007, 10h19
  3. statistique correcte pour un Explain sous DB2
    Par zukir dans le forum DB2
    Réponses: 2
    Dernier message: 17/03/2007, 15h08
  4. Réponses: 1
    Dernier message: 24/10/2006, 00h24
  5. [CR.NET] Sous-etat bug fenetre de connexion affichee+erreur
    Par Designotik dans le forum Connectivité
    Réponses: 1
    Dernier message: 18/02/2005, 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