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 :

[JDBC][Oracle] Update d'un Blob


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut [JDBC][Oracle] Update d'un Blob
    Bonjour à vous

    Je lutte pour mettre à jour un champ Blob dans une base via Java et SQL

    Voici mon code
    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
     
     
    String requete = "UPDATE APPLICATION.GARANTIE set DOCUMENT = ?, NOMFICHIER = ?, DATE_INSERTION = ? where ID = ? ";
    stmt = conn.prepareStatement(requete); 
     
      try{
     
       String[] tab_idGaranties = idsGarantie.split("_");
          for(int i=0;i<tab_idGaranties.length;i++){
           stmt.setBinaryStream(1, fis, tailleFichier );
           stmt.setString(2, nomFichier);
           stmt.setTimestamp(3,  new Timestamp(Calendar.getInstance().getTimeInMillis()));
           stmt.setLong(4, new Long(tab_idGaranties[i]).longValue());       
           stmt.executeUpdate();        
          }         
     
       conn.commit();
       stmt.clearParameters();
     
      }
      catch(Exception e){  
       System.out.println(e);
      }
      finally{  
       stmt.close();
       conn.close();    
      }
    Si quelqu'un a déjà fait un UPDATE (pas un INSERT) j'voudrais bien savoir comment il a fait (le gars... )

    Merci à vous

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    quelle est la base de données ?

    Eric

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    Bonjour,

    Il s'agit d'une base Oracle.

  4. #4
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par JohnBlatt
    Bonjour,

    Il s'agit d'une base Oracle.
    Malheureusement le code ne fonctionne pas avec Oracle, il faut passer par le type Blob et la méthode setBlob()

    Eric

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    Merci Eric,

    J'vais chercher de ce côté là. Si t'as un exemple sous la main, je suis preneur !

    Merci.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    J'ai cherché un peu partout, et je ne trouve pas un exemple concret de setBlob sous Oracle. Si quelqu'un a un bout de code, ça m'intéresse.

    Merci

  7. #7
    Membre confirmé Avatar de guandal
    Profil pro
    Analyste programmeur
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Par défaut
    salut :
    au fait je pense que tu dois devoir caster ton inputStream fis en Blob comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Blob fisBlob = (Blob) fis;
    stmt.setBlob(1, fisBlob);
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stmt.setBlob(1, (Blob)fis);
    bon celui la je ne sais pas si ça marche.
    Tiens moi au courant.

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    Merci Guandal

    Je teste de suite et je te tiens au courant.

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    Ca passe à la compilation, mais pas à l'exécution. J'ai un java.lang.ClassCastException: java.io.FileInputStream

  10. #10
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Quel driver Oracle utilises-tu ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut
    C'est toujours compliqué avec les blob/clob.
    Il faudrait que tu passes par un reader.
    Je te mets une méthode que j'avais fait pour updater un clob
    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
        public void updateGeometrie(int idgcFac, CLOB clob, Connection conn)
                    throws Exception {
            BufferedReader clobReader = new BufferedReader(clob
                    .getCharacterStream());
            String ligne = null;
            StringBuffer texte = new StringBuffer();
            try {
                while ((ligne = clobReader.readLine()) != null) {
                    texte.append(ligne);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            //préparation de la connexion
            String sqlUpd = "UPDATE INV_FACADE_SIG SET GEOMETRIE = ? "
                    + "WHERE IDGC = ?";
            PreparedStatement statementUpd = conn.prepareStatement(sqlUpd);
            //on met en place les paramètres du statementIns
            StringReader stringReader = new StringReader(texte.toString());
            statementUpd.setCharacterStream(1, stringReader, texte.length());
            statementUpd.setInt(2, idgcFac);
            //exécution de l'instruction
            statementUpd.executeUpdate();
            statementUpd.close();
        }

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 73
    Par défaut
    Ricky81 : j'utilise un Driver Oracle

    Mariemor64 : ton code marche sur une base Oracle ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut
    Oui une base Oracle 9i

  14. #14
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par JohnBlatt
    Ricky81 : j'utilise un Driver Oracle
    Oui mais lequel ? Le thin ou l'oci ? Si c'est l'oci, essaye avec le thin.
    Sinon

  15. #15
    Membre confirmé Avatar de guandal
    Profil pro
    Analyste programmeur
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Par défaut
    Citation Envoyé par JohnBlatt
    Ca passe à la compilation, mais pas à l'exécution. J'ai un java.lang.ClassCastException: java.io.FileInputStream
    c'est sur (I'm sorry).
    Sinon ton code en premier marche tres bien chez moi ,mais avec BD2 avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.setBinaryStream(1, fis, tailleFichier );
    .
    tailleFichier est un int?

Discussions similaires

  1. Update JDBC Oracle qui ne passe pas
    Par JohnMatrix dans le forum JDBC
    Réponses: 2
    Dernier message: 16/08/2007, 09h33
  2. [jdbc][oracle] conversion implicite erronée
    Par Jack Huser dans le forum JDBC
    Réponses: 2
    Dernier message: 30/06/2005, 10h23
  3. [JDBC] [ORACLE] Récupérer Id auto-inséré ???
    Par Bobsinglar dans le forum JDBC
    Réponses: 4
    Dernier message: 30/05/2005, 16h13
  4. [JDBC] [Oracle] Erreur : End of TNS data channel
    Par loicmillion dans le forum JDBC
    Réponses: 2
    Dernier message: 01/02/2005, 14h27
  5. [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

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