Rcupération de données de type Blob de la base Oracle 10g et afficher sur un Eta

Debord10 Messages postés 45 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 7 juin 2013 - 10 oct. 2012 à 15:36
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 15 oct. 2012 à 13:41
Salut!
je voudrais editer mon état à base de crystalreportviewer, mais depuis un moment suis bloqué sans avancer. Si quelqu'un a une idée qui pourra me debloquer.
Voilà mon bout de code permettant de mon image en byte avant de l'afficher sur l'Etat.
public static Image SenDImg(string SQLChaine)
{
Byte[] Retour=null;
OracleDataReader LrD = null;
if (Vconn.State == System.Data.ConnectionState.Closed)
{ Vconn.Open(); }
OracleCommand Cmd =new OracleCommand();
Cmd.Connection = Vconn;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = SQLChaine;

Retour = ((Byte[])(Cmd.ExecuteOracleScalar()));

return ConvertBitToImage(Retour);

}

Ceci est l'erreur qu'il m'envoi:
-Impossible d'effectuer un cast d'un objet de type 'System.Data.OracleClient.OracleLob' en type 'System.Byte[]'
SVP, aidez moi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
11 oct. 2012 à 13:21
Salut,

Il faut certainement passer par un MemoryStream,
Puis Image.FromStream(...)

Bye...
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
15 oct. 2012 à 13:41
Re,

plus précisément,

MemoryStream ms;
OracleLob blob = OracleLob.Null;
byte[] buffer;

OracleDataReader reader = Cmd.ExecuteReader();
reader.Read();
blob = reader.GetOracleLob(0);

buffer = new byte[blob.Length];
ms = new MemoryStream(blob.Length); 

blob.Read(buffer, 0, blob.Length);
ms.Write(buffer, 0, blob.Length);

// l'array of bytes
// ms.ToArray();

// ou l'image
Image img = Image.FromStream(ms);


bye...
0
Rejoignez-nous