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
Statut
Membre
Dernière intervention
10 août 2006
- - Dernière réponse : oh_biba
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
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
Statut
Modérateur
Dernière intervention
14 février 2014
29
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 143 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
Statut
Modérateur
Dernière intervention
14 février 2014
29
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
Statut
Modérateur
Dernière intervention
14 février 2014
29
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
Statut
Membre
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
Statut
Modérateur
Dernière intervention
14 février 2014
29
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
Statut
Membre
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
Statut
Membre
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