Inserer un Object de type BLOB ou CLOB dans une base Oracle [Résolu]

Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
10 août 2006
- - Dernière réponse : oh_biba
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
10 août 2006
- 30 sept. 2005 à 11:58
Bonjour, je suis relativement perdu quant a ce
probleme : Je souhaite stocker des fichiers dans une base Oracle depuis
appli web (C#). Comment faire, sachant que le seule chose que je permet
a l'utilisateur sera d'entrer le chemin du fichier a enregistrer ?



D'avance Merci aux experts qui pourront m'aider



Biba
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
3
Merci
ca devrait être pas mal ca :


public
byte[] FileToBytes(
string filename)
{

if (!File.Exists(filename))
{

return
null;
}

FileStream fs =
new FileStream(filename, FileMode.Open);
BinaryReader stream =
new BinaryReader(fs);

byte[] bytes = stream.ReadBytes(stream.BaseStream.Length);
stream.Close();
fs.Close();

return bytes;
}

Sébastien FERRAND

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
1
Merci
un exemple de code pour la requête :



public
int AddNewImageToDemande(

int dem_id,

byte[] image,

string text
) {

this.DBCommand.CommandText =
"INSERT INTO IMAGES (IMG_ID, DEM_ID, IMG_BINARIES, IMG_TEXT) "
+
"VALUES(SEQ_IMAGES.NEXTVAL, :DEM_ID, :IMG_BINARIES, :IMG_TEXT)";

this.DBCommand.CommandType = CommandType.Text;

if (
this.useTransaction)

this.DBCommand.Transaction = (OracleTransaction)trans;

this.DBCommand.Parameters.Clear();

this.DBCommand.Parameters.Add(
"DEM_ID", OracleType.Number);

this.DBCommand.Parameters.Add(
"IMG_TEXT", OracleType.Clob);

this.DBCommand.Parameters.Add(
"IMG_BINARIES", OracleType.Blob);

this.DBCommand.Connection =
this.oraConn;

this.DBCommand.Parameters[
"DEM_ID"].Value = dem_id;

if (text ==
string.Empty) {

this.DBCommand.Parameters[
"IMG_TEXT"].Value = OracleLob.Null;
}
else {

this.DBCommand.Parameters[
"IMG_TEXT"].Value = text.Replace(
"'",
"''");
}

this.DBCommand.Parameters[
"IMG_BINARIES"].Value = image;

return
this.DBCommand.ExecuteNonQuery();
}
}

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
les champs de type CLOB ou BLOB sont des champs de byte (byte[]), il suffit donc que tu charges le flux du fichier dans une stream...

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
10 août 2006
0
Merci
Excuse ma candeur, mais aurais-tu un quelconque exemple de code ?
Commenter la réponse de oh_biba
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
après pour transformer un fichier en byte[], ca dépend des fichiers... mais j'essaye de te faire un truc générique

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
10 août 2006
0
Merci
Merci beaucoup. En l'occurence, les fichiers sotckes seront des archives Zip, mais ca ne devrait influer en rien sur traitement.
Commenter la réponse de oh_biba
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
10 août 2006
0
Merci
Merci beaucoup, je vais m'y essayer de ce pas ;)
Commenter la réponse de oh_biba

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.