Bonjour,
Le programme en question est écrit en VC++ utilisant ADO et voici le code
Le problème s'agit plutôt d'Oracle que de C++ c'est pourquoi je le pose ici.
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;
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
Partager