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

Weblogic Java Discussion :

Blob avec DB2 & Weblogic


Sujet :

Weblogic Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    hdd
    hdd est déconnecté
    Membre confirmé Avatar de hdd
    Profil pro
    Inscrit en
    Février 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 105
    Par défaut Blob avec DB2 & Weblogic
    Bonjour,

    J'ai dans une base de données DB2 un champ de type blob. Lorsque je le récupère en Java, le cast en java.sql.Blob fonctionne, mais dès que j'essaie d'appeler une fonction du blob, j'obtiens l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/LINUX] SQL0423N La variable releveur de coordonnées "1" ne représente actuellement  aucune valeur.  SQLSTATE=0F001
     
    COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(LCOM.ibm.db2.jdbc.app.DB2Statement;Z)V(Unknown Source)
    COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(LCOM.ibm.db2.jdbc.app.DB2Statement;)V(Unknown Source)
    COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(LCOM.ibm.db2.jdbc.app.DB2Statement;I)V(Unknown Source)
    COM.ibm.db2.jdbc.app.DB2Blob.length()J(Unknown Source)
    weblogic.jdbc.wrapper.Blob_COM_ibm_db2_jdbc_app_DB2Blob.length()J(Unknown Source)
    fr.edu.lille.amia.metiers.CaracteristiquesImage.<init>(Ljava.lang.String;Ljava.lang.String;Ljava.sql.Blob;)V(Unknown Source)
    Si je fais un getClass().getName() sur mon objet, j'obtiens le nom "weblogic.jdbc.wrapper.Blob_COM_ibm_db2_jdbc_app_DB2Blob".

    Comment peut-on récupérer un blob lorsqu'on utilise une base DB2 pour un site web hégergé sur un serveur Wblogic ?

  2. #2
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Par défaut
    salut,
    j'ai eu le meme type d'erreur en utilisant un objet hibernate pour récupérer un clob (et blob ) dans une base db2 via un pool de connection géré par websphère....

    au vu de recherche sur le net , il s'agirait d'un problème de resultset
    qui se fermerait avant la lecture complète du lob
    Le driver db2 utilise en fait un pointeur dit "locator" pointant sur le lob
    ( comme te le dit implicitement l'exception) et permettant de récuperer le contenu du lob .... (bon je suis pas expert db2.)

    j'ai réussi à contourner l'exception en utilisant une connexion simple
    et en passant PAR JDBC avec driver db2java.zip
    Connection conn;
    try {
    conn = DaoBusiness.getConnection();
    Integer key = new Integer(5);
    PreparedStatement pstmt = conn.prepareStatement(
    "SELECT THE_BLOB FROM TABLE WHERE PK = ?");
    pstmt.setInt(1, key.intValue());
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()){
    Blob blob = rs.getBlob("THE_BLOB");
    MonTypeObjet monObjet = (MonTypeObjet) getDeserializeObject(blob);

    break;
    }

    rs.close();
    pstmt.close();
    } catch (Exception e) {
    e.printStackTrace();
    }


    /** FONCTION QUI TE RECUPERE L OBJET CONTENU DANS TON LOB */
    public static Object getDeserializeObject(Blob blob) throws Exception
    {
    ObjectInputStream ois=
    new ObjectInputStream (blob.getBinaryStream));
    return ois.readObject();
    }


    blob / clob meme combat.....

  3. #3
    hdd
    hdd est déconnecté
    Membre confirmé Avatar de hdd
    Profil pro
    Inscrit en
    Février 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 105
    Par défaut
    Mon problème venait du driver DB2 intégré à Weblogic.

    Par contre, comment écrivez-vous dans un blob sous DB2 (quel type d'élément dans la fonction BLOB() intégrée à DB 2) ?

  4. #4
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Par défaut
    en jdbc classique:


    /** fonction de base qui sérialize en tableau de byte */
    public static byte[] serializeObject(Object obj) throws IOException{
    ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(byteArray );
    oos.writeObject(obj);
    return byteArray.toByteArray();
    }


    byte[] bite = serializeObject(monObjet);

    PreparedStatement pstmt = conn.prepareStatement(
    UPDATE SIGHTINGS SET the_blob = ? WHERE pk= 1)
    pstmt.setBytes(1, bite);

    en sql je n'utilise pas la fonction blob...
    sinon tente une procedure stockee java ...
    bon courage

Discussions similaires

  1. Comment Enregistrer un champ type BLOB avec Query ???
    Par baba dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2005, 20h33
  2. Champs BLOB avec une connexion ADO
    Par Ol' dans le forum Bases de données
    Réponses: 6
    Dernier message: 18/05/2004, 19h21
  3. insertion des blob avec LOAD DATA...
    Par orli1x51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/10/2003, 18h05
  4. [java][Oracle]Ouvrir un fichier(blob) avec le browser
    Par marsup54 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/09/2003, 13h35
  5. problème JSP avec JBuilder et Weblogic 7
    Par viny dans le forum JBuilder
    Réponses: 2
    Dernier message: 24/04/2003, 08h07

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