Récupérer image (HugeBlob) dans une bd Oracle [Résolu]

neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention - 27 févr. 2006 à 16:32 - Dernière réponse : neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention
- 8 mars 2006 à 15:37
Bonjour,

Mon problème est le suivant : je dois récupérer une image contenue dans une BD oracle sous le format HUGEBLOB.

J'ai tenté ceci :


m_db =
DatabaseFactory.CreateDatabase(
"MaDB");
m_connection = m_db.CreateConnection();
m_connection.Open();



DbCommand command = m_db.GetSqlStringCommand(
String.Format(
"SELECT Image1 FROM Table2 where Id = '{0}'", sref));
command.Connection = m_connection;



MemoryStream ms =
new
MemoryStream((
Byte[])command.ExecuteScalar());
ou
DbDataReader reader = command.ExecuteReader();

au moment d'Executer ma commande (dans les deux cas ci-dessus) j'obtiens un message d'erreur, le voici : Unspecified error Oracle error occurred, but error message could not be retrieved rom Oracle. Data type is not supported.


QQun peut-il m'aider ou me dire simplement que le fomat de mon image n'est pas accessible sous Visual Studio 2005... Merci d'avance.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
crougni 18 Messages postés mardi 20 septembre 2005Date d'inscription 3 mars 2009 Dernière intervention - 27 févr. 2006 à 23:44
3
Merci
Salut neo,



voici un chti bout de code que j'ai vu sur le site d'Oracle...

mais il faut utiliser le ODP.NET d'oracle !



using System;

using System.Data;

using Oracle.DataAccess.Client;

using Oracle.DataAccess.Types;

using System.IO;

using System.Text;









String block = " BEGIN " +


" SELECT
photo into :1 from testblob WHERE id = 100; " +

" END; ";





OracleCommand cmd = new OracleCommand();

cmd.CommandText = block;

cmd.Connection = con;

cmd.CommandType = CommandType.Text;



OracleParameter param1 = cmd.Parameters.Add("blobfromdb", OracleDbType.Blob);

param1.Direction = ParameterDirection.Output;



cmd.ExecuteNonQuery();



byte[] byteData = new byte[0];



byteData = (byte[])((OracleBlob)(cmd.Parameters[0].Value)).Value;



int ArraySize = new int();

ArraySize = byteData.GetUpperBound(0);



FileStream fs1 = new FileStream(@DestinationLoc,


FileMode.OpenOrCreate, FileAccess.Write);

fs1.Write(byteData, 0,ArraySize);

fs1.Close();



PS: pas pu tester j'ai pas Oracle...



et pis l'adresse de la source :

http://www.oracle.com/technology/sample_code/tech/windows/odpnet/howto/anonyblock/index.html

et le lien pour recup l'ODP .NET

http://www.oracle.com/technology/software/tech/windows/odpnet/utilsoft.html



A+

Merci crougni 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de crougni
boumarsel 300 Messages postés jeudi 12 juin 2003Date d'inscription 9 juillet 2008 Dernière intervention - 27 févr. 2006 à 17:32
0
Merci
cherche dans cette section de MSDN
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdataoracleclient.asp

les types de données oracle de format lob que je connais (et que je trouve dans la documentation oracle) sont : blob, clob et nclob,
mais hugeblob...no idea, tu es certain que ça existe?
Commenter la réponse de boumarsel
neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention - 8 mars 2006 à 15:37
0
Merci
Dsl de répondre si tard, mais j'avais switché sur un autre projet...

Alors en fait j'ai installé puis testé ces composants ODP.NET mais je n'arrivai pas à les faire marcher...

Je pensais au'il y a vait un manque ds l'exemple ci-dessus. Mais en fait le problème venais de mon application et du fait qu'elle était très mal construite.

Alors merci à crougni, à boumarsel aussi

Nelson
Commenter la réponse de neo557

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.