في بعض الأحيان، يجب تخزين الصور أو الملفات في قاعدة البيانات بسبب احتياجات معينة (مثل الأمان). وبطبيعة الحال، بشكل عام، خاصة عندما تكون الملفات كبيرة نسبيًا، لا ينصح الكثير من الأشخاص بتخزين الملفات في شكل ثنائي في قاعدة البيانات الآن يتم تنظيم الوصول إلى الملفات الموجودة في الملف على النحو التالي (الفكرة هي نفس الوصول في SQL Server2000. عند التخزين، يتم تخزين دفق البايت الثنائي للصورة أو الملف في البيانات. عند القراءة، الحقل المقابل في تتم قراءة قاعدة البيانات في بيانات البايت، ثم إخراجها):
1. قم بإنشاء جدول قاعدة بيانات في TOAD أو SQLPlus.
1 إنشاء جدول TEST_TABLE
2(
3 معرف VARCHAR2 (36 بايت)،
4 اسم VARCHAR2 (50 بايت)،
5 صورة فوتوغرافية
6)
7
2. أنشئ صفحة ASPX جديدة، وضع عنصر تحكم FileUpload على الصفحة، وقم بتسميته fileUp، ثم ضع زرين باسم btnSave (حفظ) وbtnRead (قراءة).
3. قم بتنفيذ الكود التالي في حدث btnSave لحفظ الصور أو الملفات:
حفظ الصور (الملفات) في أوراكل
1StringBuilder sbSQL = new StringBuilder("أدخل في قيم Test_Table(ID,Name,Photo)(:ID,:Name,:Photo)");
2 OracleConnection cn = 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 بايت[] pic = بايت جديد[intLen];
9 fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
10 cmd.Parameters.Add(":Photo"، OracleType.Blob).Value = pic;
11 محاولة
12 {
13 cn.Open();
14 cmd.ExecuteNonQuery();
15}
16 صيد (استثناء على سبيل المثال)
17 {
18 استجابة.كتابة(ex.Message);
19}
20 أخيرا
واحد وعشرون {
22 cn.Close();
ثلاثة وعشرين }
24
4. طريقة القراءة هي كما يلي:
قراءة الصور (الملفات) من أوراكل
1OracleConnection cn = new OracleConnection(strCn);
2OracleCommand cmd = cn.CreateCommand();
3cmd.CommandText = "اختر صورة من test_table";
4محاولة
5 {
6 cn.Open();
7 تيار MemoryStream = جديد MemoryStream();
8 قارئ IDataReader = cmd.ExecuteReader();
9 إذا (reader.Read())
10 {
11 بايت[] pic = (byte[])reader[0];
12 //byte[] pic = (byte[])cmd.ExecuteScalar();
13 تيار.Write(pic, 0, pic.Length);
14 //صورة نقطية bitMap = new Bitmap(stream);
15 //Response.ContentType = "image/Jpeg";
16 //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17 //يمكن لجزء التعليق عرض الصورة في IE بدلاً من تنزيل الصورة.
18 //الطريقة التالية تقوم بتنزيل الملف مباشرة
19 Response.ContentType = "application/octet-stream";
20 Response.AddHeader("Content-Disposition", "attachment;FileName=demo.JPG");
21 Response.BinaryWrite(pic);
22 استجابة. نهاية ()؛
ثلاثة وعشرين }
أربعة وعشرون
25}
26catch (استثناء على سبيل المثال)
27 {
28 استجابة.كتابة(ex.Message);
29}
30 أخيرا
31 {
32 cn.Close();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html