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

Signaler
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
10 août 2006
-
oh_biba
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
10 août 2006
-
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

7 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
10 août 2006

Excuse ma candeur, mais aurais-tu un quelconque exemple de code ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
10 août 2006

Merci beaucoup. En l'occurence, les fichiers sotckes seront des archives Zip, mais ca ne devrait influer en rien sur traitement.
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
10 août 2006

Merci beaucoup, je vais m'y essayer de ce pas ;)