المتابعون للمدونة

الجمعة، 10 فبراير 2017

IDataRecord Interface


 واجهة سجل البيانات IDataRecord Interface 

تقدم هذه الواجهة الخصائص والوسائل اللازمة لقراءة محتويات السجل الحالي في قارئ البيانات.
وتمتلك هذه الواجهة الخاصيتين التاليتين: 

* عدد الحقول FieldCount:
تعيد عدد الأعمدة في السجل.. هذا يتيح لك كتابة حلقة تكرار Loop للمرور عبر كل الأعمدة بدءا من العمود رقم صفر إلى العمود رقم FieldCount-1.. هذا مفيد لاختصار الكود عندما تستخدم استعلام يعيد عددا كبيرا من الحقول. 

* العنصر Item:
هذه هي الخاصية الافتراضية Default Property، وهي تستقبل رقم العمود أو اسمه كمعامل، وتعيد كائنا Object يحتوي على القيمة الموجودة في السجل الحالي في هذا العمود.. والمثال التالي يعرض قيمة الخانة الاولى في الصف:
MsgBox(Reader.Item(0))
أو باختصار:
MsgBox(Reader(0)) 

كما تمتلك هذه الواجهة الوسائل التالية: 

 معرفة الاسم GetName:
أرسل إلى هذه الوسيلة رقم العمود، لتعيد إليك اسمه. 

 معرفة الترتيب GetOrdinal:
أرسل إلى هذه الوسيلة اسم العمود، لتعيد إليك رقمه. 

 معرفة نوع الحقل GetFieldType:
أرسل إلى هذه الوسيلة رقم العمود، لتعيد إليك كائن النوع Type الذي يمثل نوع بياناته. 

 معرفة اسم نوع البيانات GetDataTypeName:
أرسل إلى هذه الوسيلة رقم العمود، لتعيد إليك نصا يمثل اسم نوع بياناته. 

 معرفة القيمة GetValue:
أرسل إلى هذه الوسيلة رقم العمود، لتعيد إليك كائنا Object يحتوي على القيمة الموجودة في السجل الحالي في هذا العمود. 

 معرفة القيم GetValues:
أرسل إلى هذه الوسيلة مصفوفة كائنات Object Array، ليتم ملؤها بالبيانات الموجودة في خانات الصف الحالي في قارئ البيانات.. لاحظ أنك لو أرسلت مصفوفة أقصر من عدد خانات الصف الحالي فلن يحدث خطأ، بل سيتم نسخ جزء من الخانات فقط إلى المصفوفة وإهمال الباقي.. أما لو أرسلت مصفوفة أطول من عدد خانات الصف الحالي، فسيتم نسخ كل الخانات إلى جزء من المصفوفة وترك باقي المصفوفة فارغا.. وفي كل الأحوال، تعيد هذه الوسيلة عدد الخانات التي تم نسخها إلى المصفوفة. 

 قراءة الوحدات الثنائية GetBytes:
تستخدم عندما يكون قارئ البيانات تتابعيا Sequential، وهي تعيد مصفوفة وحدات ثنائية Bytes، تحتوي على البيانات الموجودة في أحد الأعمدة.. ولهذه الوسيلة المعاملات التالية:
- رقم العمود.
- موضع بداية القراءة من محتويات العمود.
- مصفوفة وحدات ثنائية Bytes لاستقبال البيانات.. لاحظ أن خطأ سيحدث لو كانت المصفوفة أقصر من البيانات المطلوبة.
- موضع بداية الكتابة في المصفوفة.
- عدد الوحدات الثنائية Bytes المطلوب قراءتها من محتويات العمود، بدءا من الموضع المحدد في المعامل الثاني.. لاحظ أن خطأ سيحدث لو كان الطول المطلوب أكبر من البيانات المتبقية في العمود.
وتعيد هذه الوسيلة عدد الوحدات Bytes التي تم نسخها إلى المصفوفة، ولو أرسلت إلى هذه الوسيلة مصفوفة فارغة Nothing، فستعيد إليك العدد الإجمالي للوحدات الثنائية المتاحة في الخانة الحالية من العمود.
وقد استخدمنا هذه الوسيلة في المشروع ReadLargeData لقراءة بيانات الصورة، حيث نقرأ 100 وحدة ثنائية Byte من بداية الصورة ونحفظها في الملف، ثم نقرأ 100 وحدة تالية ونحفظها في الملف، ونستمر في فعل هذا إلى أن نكمل قراءة الصورة.. لاحظ أن شرط التوقف عن القراءة، هو أن تكون القيمة العائدة من الوسيلة GetBytes أصغر من عدد البيانات الذي طلبنا قراءته، ما يعني أن هذه هي آخر بيانات متاحة في الخانة. 

 قراءة الحروف GetChars:
تستخدم عندما يكون قارئ البيانات تتابعيا Sequential، وهي تعيد مصفوفة حروف Char Array تحتوي على الحروف الموجودة في عمود نصي، وهي مماثلة للوسيلة السابقة في المعاملات والقيمة العائدة، فيما عدا أن المعامل الثالث يستقبل مصفوفة حروف بدلا من مصفوفة الوحدات الثنائية. 

 هل القيمة منعدمة IsDBNull:
تعيد True إذا كانت الخانة التي أرسلت رقمها كمعامل فارغة DbNull.. لاحظ أن عليك استخدام هذه الوسيلة قبل محاولة قراءة قيمة أي خانة، فقارئ البيانات يسبب خطأ إذا كانت قيمة الخانة NULL.. هكذا مثلا يمكنك محاولة قراءة الخانة الموجودة في العمود الأول في الصف الحالي:
If Not Reader.IsDBNull(0) Then MsgBox(Reader(0)) 

كما تمتلك هذه الواجهة عددا من الوسائل التي تستقبل رقم العمود، وتعيد قيمة الخانة الموجودة في هذا العمود في الصف الحالي.. وتختلف هذه الوسائل في نوع القيمة العائدة منها، حيث تقوم كل منها بتحويل بيانات الخانة إلى أحد أنواع إطار العمل الأساسية، كما هو موضح في الجدول التالي: 

الوسيلة
النوع الذي تعيده
GetByte
وحدة ثنائية Byte.
GetChar
حرف Char.
GetBoolean
قيمة منطقية Boolean.
GetInt16
عدد قصير Short.
GetInt32
عدد صحيح Integer.
GetInt64
عدد طويل Long.
GetFloat
عدد مفرد Single.
GetDouble
عدد مزدوج Double.
GetDecimal
عدد عشري Decimal.
GetDateTime
تاريخ ووقت DateTime.
GetString
نص String.
GetGuid
سجل المعرف المتفرد Guid Structure.

وتسبب هذه الوسائل خطأ في البرنامج إذا فشلت في تحويل البيانات إلى النوع المطلوب.
 
 من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر