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

Signaler
Messages postés
45
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
7 juin 2013
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
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

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

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

Bye...
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
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...