บางครั้งรูปภาพหรือไฟล์ต้องถูกเก็บไว้ในฐานข้อมูลเนื่องจากความต้องการบางอย่าง (เช่น ความปลอดภัย) โดยทั่วไปแล้ว โดยเฉพาะอย่างยิ่งเมื่อไฟล์มีขนาดค่อนข้างใหญ่ หลายคนไม่สนับสนุนการจัดเก็บไฟล์ในรูปแบบไบนารี่ในฐานข้อมูล การเข้าถึงไฟล์ในไฟล์นั้นถูกจัดระเบียบดังนี้ (แนวคิดเหมือนกับการเข้าถึงใน SQL Server2000 เมื่อจัดเก็บ สตรีมไบต์ไบนารีของรูปภาพหรือไฟล์จะถูกเก็บไว้ในข้อมูล เมื่ออ่าน ฟิลด์ที่เกี่ยวข้องใน ฐานข้อมูลถูกอ่านลงในข้อมูลไบต์แล้วส่งออก ):
1. สร้างตารางฐานข้อมูลใน TOAD หรือ SQLPlus
1สร้างตาราง TEST_TABLE
2(
3 ID VARCHAR2(36 ไบต์)
4 ชื่อ วาร์ชาร์2(50 ไบต์)
5 รูปถ่ายหยด
6)
7
2. สร้างเพจ ASPX ใหม่ วางตัวควบคุม FileUpload บนเพจ ตั้งชื่อเป็น fileUp และวางปุ่มสองปุ่มชื่อ btnSave (บันทึก) และ btnRead (อ่าน)
3. ดำเนินการโค้ดต่อไปนี้ในเหตุการณ์ btnSave เพื่อบันทึกรูปภาพหรือไฟล์:
บันทึกรูปภาพ (ไฟล์) ลงใน Oracle
1StringBuilder sbSQL = new StringBuilder("insert into 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(":ชื่อ", OracleType.VarChar, 50).Value = fileUp.FileName;
7 int intLen = fileUp.PostedFile.ContentLength;
8 ไบต์ [] pic = ไบต์ใหม่ [intLen];
9 fileUp.PostedFile.InputStream.Read (รูป, 0, intLen);
10 cmd.Parameters.Add(":Photo", OracleType.Blob).Value = รูป;
11 ลอง
12 {
13 cn.เปิด();
14 cmd.ExecuteNonQuery();
15}
16 จับ (ข้อยกเว้นเช่น)
17 {
18 Response.Write (เช่น ข้อความ);
19}
20 ในที่สุด
ยี่สิบเอ็ด {
22 cn.ปิด();
ยี่สิบสาม }
24
4. วิธีการอ่านมีดังนี้:
อ่านรูปภาพ (ไฟล์) จาก Oracle
1OracleConnection cn = OracleConnection ใหม่ (strCn);
2OracleCommand cmd = cn.CreateCommand();
3cmd.CommandText = "เลือกรูปภาพจาก test_table";
4ลอง
5{
6 cn.เปิด();
7 กระแส MemoryStream = MemoryStream ใหม่();
8 เครื่องอ่าน IDataReader = cmd.ExecuteReader();
9 ถ้า (reader.Read())
10 {
11 ไบต์[] pic = (ไบต์[])เครื่องอ่าน[0];
12 //ไบต์[] pic = (ไบต์[])cmd.ExecuteScalar();
13 สตรีมเขียน (รูป, 0, pic.Length);
14 //บิตแมป bitMap = บิตแมปใหม่ (สตรีม);
15 //Response.ContentType = "รูปภาพ/Jpeg";
16 //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17 //ส่วนความคิดเห็นสามารถแสดงรูปภาพใน IE แทนการดาวน์โหลดรูปภาพได้
18 //วิธีการต่อไปนี้ดาวน์โหลดไฟล์โดยตรง
19 Response.ContentType = "application/octet-stream";
20 Response.AddHeader("การจัดการเนื้อหา", "ไฟล์แนบ;FileName= demo.JPG");
21 ตอบกลับ BinaryWrite (รูป);
22 การตอบสนอง สิ้นสุด();
ยี่สิบสาม }
ยี่สิบสี่
25}
26catch (ข้อยกเว้นเช่น)
27{
28 Response.Write (เช่น ข้อความ);
29}
30ในที่สุด
31{
32 cn.ปิด();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html