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

Interfaces de programmation Oracle Discussion :

[ADO] Problème d'obtention de la taille du type BLOB dans un programme


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut [ADO] Problème d'obtention de la taille du type BLOB dans un programme
    Bonjour,

    Le programme en question est écrit en VC++ utilisant ADO et voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           DataTypeEnum nDataType = (DataTypeEnum)(long) FieldsPtr->GetItem("DATA_TYPE")->Value;
           _variant_t vtLong = FieldsPtr->GetItem("CHARACTER_MAXIMUM_LENGTH")->Value;
           long iLongueur = 0;
           if(vtLong.vt != VT_NULL)
               iLongueur = (long)vtLong;
    Le problème s'agit plutôt d'Oracle que de C++ c'est pourquoi je le pose ici.
    Mon soucis est alors lors de l'obtention dans un VARIANT de la longueur max d'un champ d'une base de données, le problème c'est lorsque le champ est de type BLOB.
    Ce code marche avec Sql Server mais avec oracle par ex, il y a erreur lors du "iLongueur = (long)vtLong", cela est capturé avec un try...catch... plus exactement lorsque vtLong est une grande valeur car nDataType = adBinary (le type binaire en base de données).

    Même table avec même structure, ce code marche sous SQL SERVER qui utilise IMAGE au lieu de BLOB mais sous Oracle, ça crash, pourquoi

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Bien que le résultat obtenu par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _variant_t vtLong = FieldsPtr->GetItem("CHARACTER_MAXIMUM_LENGTH")->Value;
    est une variante de type VT_R8 pour SQL Server (type IMAGE) et pour Oracle (type BLOB), faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iLongueur = (long)vtLong;
    Ca marche pour SQL Server mais pour Oracle, il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iLongueur = (long)vtLong.dblVal;
    Bien que c'est du C++, c'est utile de savoir cela pour utiliser Oracle convenablement !!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/01/2010, 10h08
  2. Réponses: 5
    Dernier message: 19/05/2009, 20h28
  3. Réponses: 8
    Dernier message: 16/08/2006, 14h39
  4. Réponses: 3
    Dernier message: 09/01/2006, 11h26
  5. Problème avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    Réponses: 1
    Dernier message: 10/11/2005, 17h33

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