الانتقال إلى المحتوى

طريقة حفظ ملف على قاعدة البيانات


Ahmad.Hasan

Recommended Posts

السلام عليكم
كثرت الإسئلة حول حفظ ملف في قاعدة البيانات واليكم الطريقة التالية:

1- إنشاء جدول لحفظ البيانات كالتالي:


Create Table Email_Attachments(Id_Pk Integer Primary Key,
                              Fname Varchar2(50),
                              Image Blob);



2- إنشاء Directory وليكن إسمه Temp:

Create Or Replace Directory Temp As 'C:\';



3- إنشاء Procedure الذي يقوم على حفظ البيانات داخل الجدول:


Create Or Replace Procedure Load_File(Pi_Id In  Integer, 
                                     Pfname In Varchar2) Is
Src_File Bfile;
Dst_File Blob;
Lgh_File Binary_Integer;
Begin
Src_File := Bfilename('TEMP', Pfname);
 Insert Into Email_Attachments (Id_Pk,Fname,Image) Values (Pi_Id,Pfname, Empty_Blob())
  Returning Image Into Dst_File;
  Dbms_Lob.Open(Src_File, Dbms_Lob.File_Readonly);
  Lgh_File := Dbms_Lob.Getlength(Src_File);
  Dbms_Lob.Loadfromfile(Dst_File, Src_File, Lgh_File);
  Dbms_Lob.Close(Src_File);
 Commit;
End Load_File;
/ 



4- قم بتنفيذ البروسيجر للتأكد من انه تم حفظ البيانات:

Execute Load_File(1,'test.txt');



بالتوفيق.

رابط هذا التعليق
شارك

مشكور اساتاذنا الفاضل

علي هذه الطريقة السلسه
ولكن تبقي مشكله عرضه

ثانية بعد حفظه علي الداتابيز ليس من الharddisk

يعني هل يمكن عمل فورم ومن الفورم اعرض المرفقات المحفوظه في الداتابيز وطبعا الملف ده ممكن يكون باي نوع فورمات يعني ورد بي دي اف تكست...

شكرا اخي الكريم

رابط هذا التعليق
شارك

السلام عليكم
جرب هذه الطريقة:


Declare
 Filename Varchar2(500);
Begin
 Filename:=Get_File_Name(' ',Null,Null,'Choose any directory.',Open_File,False);
 :Ti_Path:=Filename;  -- Here You Will Assign To You Form'S Field.
End;

رابط هذا التعليق
شارك

مشكور اخي الكريم

ولكن هذه الطريقة لا تعطينا فايدة حفظ الملفات علي الداتابيز

لانك الان هتفتحها من الDARD DISK

يعني لو اتمسحت او عطل الHARD

ما استفدتش حاجة من الحفظ علي الداتابيز

شكرا جزيلا

رابط هذا التعليق
شارك

  • بعد 4 شهور...

مشكور اخي الكريم

ولكن هذه الطريقة لا تعطينا فايدة حفظ الملفات علي الداتابيز

لانك الان هتفتحها من الDARD DISK

يعني لو اتمسحت او عطل الHARD

ما استفدتش حاجة من الحفظ علي الداتابيز

شكرا جزيلا



اواجه نفس المشكلة ارجو مساعدتي
رابط هذا التعليق
شارك

  • بعد 1 سنة...

 

مشكور اخي الكريم

 

ولكن هذه الطريقة لا تعطينا فايدة حفظ الملفات علي الداتابيز

 

لانك الان هتفتحها من الDARD DISK

 

يعني لو اتمسحت او عطل الHARD

 

ما استفدتش حاجة من الحفظ علي الداتابيز

 

شكرا جزيلا

 

اواجه نفس المشكلة ارجو مساعدتي

 

 

السلام عليكم

اذا الملف تم حفظه في الداتا بيز حتى لو اتمسح من الهارد سيبقى الملف مخزن في الداتابيز ويمكنك الرجوع إليه متى شئت...

رابط هذا التعليق
شارك

  • بعد 6 شهور...

مشكور اساتاذنا الفاضل

 

علي هذه الطريقة السلسه

ولكن تبقي مشكله عرضه

 

ثانية بعد حفظه علي الداتابيز ليس من الharddisk

 

يعني هل يمكن عمل فورم ومن الفورم اعرض المرفقات المحفوظه في الداتابيز وطبعا الملف ده ممكن يكون باي نوع فورمات يعني ورد بي دي اف تكست...

 

شكرا اخي الكريم

اخي الكريم لم يعمل معي هذا الاجراء عند الاستدعاء

رابط هذا التعليق
شارك

السلام عليكم

جرب هذه الطريقة:

 

 

Declare
  Filename Varchar2(500);
Begin
  Filename:=Get_File_Name(' ',Null,Null,'Choose any directory.',Open_File,False);
  :Ti_Path:=Filename;  -- Here You Will Assign To You Form'S Field.
End;

المشكلة تظهر هنا Source of PACKAGE BODY SYS.DBMS_LOB is not available افيدنا الله يكون في عونك

رابط هذا التعليق
شارك

السلام عليكم

جرب هذه الطريقة:

 

 

Declare
  Filename Varchar2(500);
Begin
  Filename:=Get_File_Name(' ',Null,Null,'Choose any directory.',Open_File,False);
  :Ti_Path:=Filename;  -- Here You Will Assign To You Form'S Field.
End;

مش واضح واين اعمل هذا الكود في  الاجراء ولكن شكر الله سيعك ياخي الكريم ارجو التوضيح حفظك الله ورعاك

تم تعديل بواسطة بديع المعمري
رابط هذا التعليق
شارك

 

السلام عليكم

جرب هذه الطريقة:

 

 

Declare
  Filename Varchar2(500);
Begin
  Filename:=Get_File_Name(' ',Null,Null,'Choose any directory.',Open_File,False);
  :Ti_Path:=Filename;  -- Here You Will Assign To You Form'S Field.
End;

مش واضح واين اعمل هذا الكود في  الاجراء ولكن شكر الله سيعك ياخي الكريم ارجو التوضيح حفظك الله ورعاك

 

 

السلام عليكم

الكود السابق يكتب داخل الفورم للإصدار 6i.

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية