كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟
#1
السلام عليكم

كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟
في قاعدة المعطيات عندي جدول condidat و توجد الحقول التالية رقم المترشح ، اسم المترشح ، لقب المترشح،.......،صورة المترشح
انا استعمل delphi 7 و SQL server 2000 كقاعدة معطيات
الرد
#2
السلام عليكم...

الكود التالي يفترض أنه يوجد Image1 قد يحتوي على صورة الشخص. و أن نوع الحقل في جدول SQL Server هو Image:

كود :
var CmdText: string; HasPicture: Boolean; PicStream: TMemoryStream; Bmp: TBitmap; begin // ... // ... CmdText := 'INSERT INTO table_name (field1, field2, field3, ..., img_field)'; CmdText := CmdText + ' VALUES (' + value1; CmdText := CmdText + ', ' + value2; CmdText := CmdText + ', ' + value3; CmdText := CmdText + ', ' + ... // ... // ... if Assigned(Image1.Picture.Graphic) then begin // في حالة وجود صورة في المكون HasPicture := True; // إنشاء بارامتر لإضافة الصورة CmdText := CmdText + ', :PicData'; try // Create a Memory stream: PicStream := TMemoryStream.Create; // إنشاء صورة نقطية في الذاكرة Bmp := TBitmap.Create; // تحميل الصورة من المكون إلى الذاكرة Bmp.Assign(imgPicture.Picture.Graphic); // حفظ الصورة مؤقتاً في الذاكرة Bmp.SaveToStream(PicStream); // إعادة ضبط المؤشر إلى أول بايت - مهم PicStream.Seek(0, soFromBeginning); finally Bmp.Free; end; end else begin // في حالة عدم وجود صورة في المكون HasPicture := False; CmdText := CmdText + ', NULL'; // لا نخزن شيئاً في الحقل end; CmdText := CmdText + ')'; ADOCommand.CommandText := CmdText; if HasPicture then begin // إذا كانت هناك صورة فإننا ننسخها من الذاكرة إلى البارامتر ADOCommand.Parameters.ParamByName('PicData').LoadFromStream(PicStream, ftGraphic); if Assigned(PicStream) then PicStream.Free; end; // ننفذ استعلام الحفظ ADOCommand.Execute;

* الصور التي جربتها شخصياً كانت من النوع BMP و JPG. أما بقية الأنواع فلم أجربها.

* table_name هو اسم الجدول لديك.

* field1 و field2 و field3 ... إلخ. هي أسماء الحقول في جدولك.

* value1 و value2 و value3 ... إلخ. هي القيم المقابلة للحقول في جدولك، باستثناء حقل الصورة.

* img_field هو اسم حقل الصورة في قاعدة البيانات (و يكون من النوع image).

* ADOCommand هو اسم مكون الـ ADOCommand الذي ستستعمله لحفظ البيانات.

*** نصيحة: رغم أن حفظ الصور ضمن قاعدة البيانات يضمن وجود الصورة معسجلها، فإن ذلك قد يؤدي إلى تضحم قاعدة البيانات بشكل كبير. و لهذا ربما يكون أحياناً من الأنسب حفظ الصور كملفات خارجية في مجلد تابع للبرنامج، و جعل حقل الصورة عبارة عن حقل نصي لحفظ مسار ملف الصورة المرتبطة بالسجل (بالطبع مع احتمال حذف الصورة من خارج البرنامج - مثلاً من خلال مستكشف ويندوز!) - الخيار يبقى لك.

نرجو الاستفادة و السلام.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم