التعليقات

كيفية تخزين بيانات السجل في حقل BLOB في دلفي

كيفية تخزين بيانات السجل في حقل BLOB في دلفي


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

في دلفي ، نوع بيانات السجل هو نوع خاص من أنواع البيانات المعرفة من قبل المستخدم. السجل عبارة عن حاوية لمزيج من المتغيرات ذات الصلة بأنواع متنوعة ، يشار إليها بالحقول ، يتم جمعها في نوع واحد.

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

سجل بلوب

إليك كيفية القيام بذلك متجراسترداد) ا سجل (هيكل) القيمة إلى حقل النقطة في قاعدة البيانات.

المستخدم = سجل ...
افترض أنك قمت بتعريف نوع السجل المخصص الخاص بك على النحو التالي:

المستخدم = معباه سجل اسم : خيط50؛ CanAsk: منطقية. NumberOfQuestions: integer؛ النهاية;

"Record.SaveAsBlob"
لإدراج صف جديد (سجل قاعدة البيانات) في جدول قاعدة بيانات مع حقل BLOB باسم "البيانات" ، استخدم الكود التالي:

فار المستخدم: TUser ؛ blobF: TBlobField؛ bs: TStream ؛ ابدأ اسم المستخدم: = edName.Text؛ User.NumberOfQuestions: = StrToInt (edNOQ.Text)؛ User.CanAsk: = chkCanAsk.Checked؛ myTable.Insert. blobF: = myTable.FieldByName ('data') مثل TBlobField. bs: = myTable.CreateBlobStream (blobF ، bmWrite) ؛ محاولة bs.Write (مستخدم ، SizeOf (مستخدم)) ؛ أخيرا bs.Free. النهاية; النهاية;

في الكود أعلاه:

  • "myTable" هو اسم مكون TDataSet الذي تستخدمه (TTable ، TQuery ، ADOTable ، TClientDataSet ، إلخ).
  • اسم حقل النقطة هو "البيانات".
  • يتم تعبئة المتغير "المستخدم" (سجل المستخدم) باستخدام مربعي التحرير ("edName" و "edNOQ") وخانة اختيار ("chkCanAsk")
  • ينشئ الأسلوب CreateBlobStream كائن TStream للكتابة إلى حقل النقطة.

"Record.ReadFromBlob"
بمجرد حفظ بيانات السجل (TUser) في حقل نوع النقطة ، إليك كيفية "تحويل" البيانات الثنائية إلى قيمة TUser:

فار المستخدم: TUser ؛ blobF: TBlobField؛ bs: TStream ؛ ابدأ    إذا myTable.FieldByName ( 'بيانات'). IsBlob ثم    ابدأ blobF: = DataSet.FieldByName ('data') مثل TBlobField. bs: = myTable.CreateBlobStream (blobF، bmRead)؛ محاولة bs.Read (المستخدم ، sizeof (TUser)) ؛ أخيرا bs.Free. النهاية;    النهاية. edName.Text: = User.Name؛ edNOQ.Text: = IntToStr (User.NumberOfQuestions)؛ chkCanAsk.Checked: = User.CanAsk؛ النهاية;

ملاحظة: يجب أن يدخل الرمز أعلاه داخل معالج الأحداث "OnAfterScroll" لمجموعة بيانات myTable.

هذا هو. تأكد من تنزيل نموذج كود Record2Blob.



تعليقات:

  1. Hickey

    في رأيي ، ترتكب الأخطاء. دعونا نحاول مناقشة هذا. اكتب لي في رئيس الوزراء ، يتحدث إليك.

  2. Skete

    في رأيي لم تكن على حق. يمكنني الدفاع عن موقفي. اكتب لي في رئيس الوزراء ، سنناقش.



اكتب رسالة