Parfois, des images ou des fichiers doivent être stockés dans la base de données en raison de certains besoins (comme la sécurité). Bien entendu, en général, surtout lorsque les fichiers sont relativement volumineux, de nombreuses personnes ne préconisent pas de stocker des fichiers sous forme binaire dans la base de données Now Oracle. L'accès aux fichiers dans le fichier est organisé comme suit (l'idée est la même que l'accès dans SQL Server2000. Lors du stockage, le flux d'octets binaires de l'image ou du fichier est stocké dans les données. Lors de la lecture, le champ correspondant dans le fichier la base de données est lue dans les données d'octet, puis sortie ):
1. Créez une table de base de données dans TOAD ou SQLPlus.
1CRÉER TABLE TEST_TABLE
2(
3 ID VARCHAR2 (36 octets),
4 NOM VARCHAR2 (50 OCTETS),
5BLOB DE PHOTOS
6)
7
2. Créez une nouvelle page ASPX, placez un contrôle FileUpload sur la page, nommez-le fileUp et placez deux boutons nommés btnSave (enregistrer) et btnRead (lire).
3. Exécutez le code suivant dans l'événement btnSave pour enregistrer des images ou des fichiers :
Enregistrer des images (fichiers) sur Oracle
1StringBuilder sbSQL = new StringBuilder("insérer dans les valeurs Test_Table(ID,Nom,Photo)(:ID,:Nom,:Photo)");
2 OracleConnection cn = new OracleConnection(strCn);
3 OracleCommand cmd = cn.CreateCommand();
4 cmd.CommandText = sbSQL.ToString();
5 cmd.Parameters.Add(":ID", OracleType.VarChar, 36).Value = Guid.NewGuid().ToString();
6 cmd.Parameters.Add(":Name", OracleType.VarChar, 50).Value = fileUp.FileName;
7 int intLen = fileUp.PostedFile.ContentLength;
8 octets[] pic = nouvel octet[intLen];
9 fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
10 cmd.Parameters.Add(":Photo", OracleType.Blob).Value = pic;
11 essais
12 {
13 cn.Open();
14 cmd.ExecuteNonQuery();
15}
16 prises (Exception ex)
17 {
18 Réponse.Écriture (ex.Message);
19}
20 enfin
vingt-et-un {
22 cn.Close();
vingt-trois }
24
4. La méthode de lecture est la suivante :
Lire des images (fichiers) depuis Oracle
1OracleConnection cn = new OracleConnection(strCn);
2OracleCommand cmd = cn.CreateCommand();
3cmd.CommandText = "sélectionner une photo dans test_table";
4essais
5{
6 cn.Open();
7 Flux MemoryStream = new MemoryStream();
8 Lecteur IDataReader = cmd.ExecuteReader();
9 si (lecteur.Read())
10 {
11 octets[] pic = (octet[])lecteur[0];
12 //octet[] pic = (octet[])cmd.ExecuteScalar();
13 stream.Write(pic, 0, pic.Length);
14 //Bitmap bitMap = new Bitmap(stream);
15 //Response.ContentType = "image/Jpeg";
16 //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17 //La partie commentaire peut afficher l'image dans IE au lieu de télécharger l'image.
18 //La méthode suivante télécharge le fichier directement
19 Response.ContentType = "application/octet-stream" ;
20 Response.AddHeader("Content-Disposition", "attachment;FileName= demo.JPG");
21 Réponse.BinaryWrite(pic);
22 Réponse.End();
vingt-trois }
vingt-quatre
25}
26catch (Exception ex)
27{
28 Réponse.Écriture (ex.Message);
29}
30enfin
31{
32 cn.Close();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html