Inserer un Object de type BLOB ou CLOB dans une base Oracle

Résolu
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:05
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

7 réponses

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
30 sept. 2005 à 11:55
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
3
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
30 sept. 2005 à 11:34
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
1
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
30 sept. 2005 à 11:24
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
0
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:28
Excuse ma candeur, mais aurais-tu un quelconque exemple de code ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
30 sept. 2005 à 11:38
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
0
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:42
Merci beaucoup. En l'occurence, les fichiers sotckes seront des archives Zip, mais ca ne devrait influer en rien sur traitement.
0
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
Merci beaucoup, je vais m'y essayer de ce pas ;)
0