مجموعة البيانات DataSet
مجموعة البيانات هي وعاء مصغر لقاعدة البيانات في
برنامجك، يتيح لك أن تحمّل في الذاكرة، بعض الجداول أو أجزاء منها (تبعا للاستعلام
المستخدم) مع قدرتك على إنشاء العلاقات بينها ووضع القيود عليها، وبهذا يمكنك
التعامل مع هذه البيانات على جهازك بعد قطع الاتصال مع الخادم.
وتمتاز مجموعة البيانات بأنها عامة، فهي تستطيع التعامل
مع أي نوع من أنواع قواعد البيانات، ويمكنها استيعاب الجداول دون أن يعنيها
مصدرها، بينما تترك مهمة التعامل مع مصدر البيانات لموصل البيانات Data Adapter وكائن الاتصال Connection Object.. لهذا يوجد في دوت نت نوع واحد
فقط من مجموعة البيانات، على عكس الكائنات التي تعرفنا عليها سابقا، والتي يوجد
منه نوع خاص بكل مزود من مزودات قاعدة البيانات.
وتستخدم مجموعة البيانات داخليا كود XML لحفظ مخططات الجداول والأعمدة Schema،
وبيانات الصفوف.. ويتيح لك هذا حفظ مخططات وبيانات الجداول من مجموعة البيانات إلى
جهازك في صورة وثائق XML، ومن ثم إعادة تحميلها في مجموعة البيانات مرة أخرى لاحقا.
وكما ذكرنا من قبل، تحتفظ مجموعة البيانات بنسختين من كل
سجل:
- النسخة الأصلية Original Version التي تم تحميلها من قاعدة البيانات.
- النسخة الحالية Current Version التي تحتوي على السجل بعد حدوث تغييرات به.
ويمتلك
كل سجل الخاصية RowState
التي توضح حالته، وهل دخلت عليه تغييرات وهل تم حفظ هذه التغييرات إلى قاعدة
البيانات أم لا.. وبهذا التنظيم تستطيع مجموعة البيانات نقل التغييرات إلى قاعدة
البيانات وتحديثها، بالاعتماد على موصل البيانات، الذي يعيد فتح الاتصال مع
الخادم.. هذا يجعل مجموعة البيانات أفضل من قارئ البيانات في الحالات التالية:
1- إذا كان البرنامج
يتعامل مع الكثير من الجداول والسجلات، ويستخدمها أكثر من مرة بدون ترتيب معين..
في هذه الحالة يكون المرور عبرها على التوالي باستخدام قارئ البيانات أمرا غير
عملي.
2- إذا كان المطلوب عرض
البيانات للمستخدم والسماح له بالتعامل معها وتعديلها بحرية، والإضافة إليها
والحذف منها.. أنت تعرف أن قارئ البيانات لا يقوم بتحديث السجلات، فهو للقراءة
فقط.
3- إذا كانت هناك علاقات بين الجداول وقيود مفروضة عليها، ومن
المهم التعامل معها في البرنامج عند الإضافة والحذف، فمجموعة البيانات تسمح
بالتعامل مع العلاقات والقيود، وهذا غير متوفر في قارئ البيانات.
لكن
على الجانب الآخر، تعاني مجموعة البيانات من العيبين التاليين:
1- تعتبر مجموعة
البيانات عبئا على ذاكرة الجهاز، لهذا يجب عليك تحميلها بالقدر الذي تحتاجه من
البيانات فحسب، ولا تضع فيها الجداول بكامل صفوفها بدون فائدة، وبدلا من هذا
استخدم شرطا في جملة التحديد SELECT لتحصل على السجلات المطلوبة بالضبط.. أيضا، لا تحمل من الجداول
أعمدة لا يحتاجها المستخدم.
2- قد تسبب مجموعة
البيانات مشاكل عند تحديث قاعدة البيانات، وذلك إذا كان مستخدمون آخرون قد غيروا
قيم بعض السجلات في قاعدة البيانات أثناء قطع الاتصال وتعاملك معها في مجموعة
البيانات، فيما يسمى بمشاكل التطابق Concurrency Violations.. وقد رأينا في الفصل السابق كيف يمكن حل هذه المشكلة.
والآن،
دعنا نتعرف على فئة مجموعة البيانات.
من
كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.