شاطر
اذهب الى الأسفل
عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
معاينة صفحة البيانات الشخصي للعضو

الوضع المتصل والوضع المنفصل

في الخميس أكتوبر 10, 2013 4:40 pm
السلام عليكم و رحمة الله تعالى و بركاته...............................................................................................الموضوع منقول للافادة.....

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

قبل الدخول في صلب الموضوع, دعونا نلقي نظرة خاطفة على بنية قاعدة البيانات التي سنستخدمها في كل المشاريع المرفقة مع هذا الدرس. حتى نبسط الدروس و الكود, سنستخدم قواعد البيانات من نوع Access حتى نتمكن من إرفاق قاعدة البيانات مع المشاريع بدون تعقيدات. قاعدة البيانات AccessDB.mdb مكونة من جدولين, الجدول الأول UserInfo مكون من أربع حقول و هي كالتالي :
- ID : من نوع LONG, مرجع التسجيل, مفتاح رئيسي بخاصية الترقيم التلقائي.
- Login : من نوع VARCHAR, حجمه 32 (حرف)
- Password : من نوع VARCHAR, حجمه 32 (حرف)
- GroupID : من نوع LONG, للربط مع الجدول GroupInfo

الجدول الثاني GroupInfo مكون من حقلين و هي كالتالي :
- ID : من نوع LONG, مرجع التسجيل, مفتاح رئيسي بخاصية الترقيم التلقائي.
- Name : من نوع VARCHAR, حجمه 32 (حرف)

كما هو ظاهر فالجدول الأول هو لحفظ معلومات عن مستخدم ما, تم تحجيمها لأصغر ما يمكن لتبسيط الموضوع. الجدول الثاني هو لحفظ اسماء المجموعات التي يمكن أن ينتمي لها المستخدم. لماذا جدول المجموعات؟.. لأن من بين الأسئلة الشائعة للأعضاء أيضا, كيفية ربط كومبوبوكس بجدول بقاعدة البيانات.

قبل التطرق للأمثلة و الأكواد لابد من التكلم قليلا عن الوضعين موضوع الدرس.
الوضع المنفصل :
نقصد بالوضع المنفصل عملية تحميل البيانات من القاعدة إلى الذاكرة الحية و العمل على هذه البيانات على الذاكرة الحية و بعد الإنتهاء من العمل حفظ البيانات في حالتها الجديدة رجوعا إلى قاعدة البيانات. سميت طريقة العمل هاته بالوضع المنفصل لأننا نقطع الإتصال بقاعدة البيانات مباشرة بعد تحميل البيانات و يبقى الإتصال منقطعا طوال مدة العمل على البيانات على الذاكرة الحية و لا نحتاج لربط الإتصال مرة أخرى بقاعدة البيانات إلا عند الحاجة لحفظ البيانات من الذاكرة الحية رجوعا إلى قاعدة البيانات و قد يكون هذا الوقت عند غلق التطبيق. هذه خطوات العمل بهذه الطريقة :
- إنشاء و تهيئة كائن ربط الإتصال بقاعدة البيانات من نوع OleDbConnection.
- إنشاء و تهيئة كائن تبادل البيانات بين التطبيق و قاعدة البيانات أي الكائن OleDbDataAdpater الذي يضع رهن إشارتنا أربع خصائص من نوع OleDbCommand كل واحدة لنوع من أنواع العمليات الممكنة على جدول على قاعدة البيانات, أقصد عمليات تحميل, تحديث, زيادة و حذف البيانات.
- إنشاء و تهيئة كائن من نوع DataSet الذي سيكون بمثابة نسخة من قاعدة البيانات على الذاكرة الحية. هذا الكائن سيجمع كل الجداول التي سيتم تحميلها من قاعدة البيانات عن طريق الكائن OleDbDataAdapter.
- الآن تأتي عملية قراءة البيانات عن طريق الكائن OleDbDataAdapter بالمناداة على الدالة Fill التي تنشئ لنا جدولا على الكائن من نوع DataSet و تحمل إليه البيانات المطابقة لجملة الاستعلام المحددة على الكائن OleDbDataAdapter.SelectCommand
...
- بعد العمل على البيانات الموجودة الآن على الذاكرة الحية, سنحتاج بطبيعة الحال إلى حفظ التغييرات رجوعا إلى قاعدة البيانات لأنه في حالة خطأ في التطبيق أو نظام التشغيل أو انقطاع في الكهرباء, التغييرات التي قام بها المستخدم لن يتم حفظها لأنها كلها تم القيام بها على الذاكرة الحية. لحفظ البيانات من الذاكرة الحية رجوعا إلى قاعدة البيانات نستخدم الدالة Update للكائن من نوع OleDbDataAdapter التي ستقوم باستعراض كل البيانات على الذاكرة الحية (مجموعات DataRow) حيث ستحذف الأسطر المحذوفة, ستقوم بتحديث الأسطر التي تم عليها تحديث, ستقوم بزيادة الأسطر الجديدة و ستتجاهل الأسطر التي لم يطرأ عليها تحديث. ملخص القول أن الدالة Update في حالة نجاحها تكون قد حولت البيانات على قاعدة البيانات إلى نسخة طبق الأصل من البيانات الموجودة على الذاكرة الحية.
لاحظوا معي طول الوصف للوضع المنفصل, هذا لأن Ado.NET تقوم مكان المطور بكل العمليات و ستتوضح الفكرة أكثر في جزء ربط جدول بـ DataGridView حيث سنحتاج فقط لتحميل البيانات بطريقة الوضع المنفصل ثم ستقوم DataGridView بتسيير كل العمليات من زيادة و تحديث و حذف من دون الحاجة لتدخل المطور و في النهاية سنقوم بحفظ التغييرات بأقل من خمسة أسطر من الكود.

الوضع المتصل :
سمي هذا الوضع بالمتصل لأن التطبيق يبقى على اتصال مع قاعدة البيانات في أي عملية يريد القيام بها. الوضع المتصل أصعب في تطويره من الوضع المنفصل لأنك في هذا الوضع تأخد زمام الأمور لتقوم بالعمليات بطريقة مشخصة حسب حاجيات التطبيق و تصميمه. الوضع المتصل لا يحتاج إلى حجز الكثير من الذاكرة الحية كما هو الحال في الوضع الآخر. الوضع المتصل كذلك يكون أكثر فعالية في حالة كبر حجم قاعدة البيانات حيث نستطيع تحميل فقط البيانات التي نحتاج في وقت من أوقات تشغيل البرنامج. يمكن أن ألخص الوضع المتصل في تنفيذ جمل SQL في كل مرة نريد القيام بعملية على البيانات على القاعدة و سنتطرق بالتفصيل لهذا الوضع مع أول مثال لدراسة الوضع المتصل.
أيضا, لاحظوا معي وصف الوضع المتصل. صغر وصفه إن دل على شيء فإنما يدل على أنه وضع مشخص أكثر منه وضع قياسي, أي أن له ارتباط وثيق بتصميم و حاجيات المشروع المختلفة اختلاف مشروع عن الآخر.

الأمثلة التي سنقوم بدراستها ستكون بصيغة نفس المشروع (واجهة المستخدم و قاعدة البيانات) و لكن سنرى كيفية ربط المشروع بقاعدة البيانات بالوضع المنفصل و ما يقابلها بالوضع المنفصل حتى تتكون للقارئ فكرة عامة عن نقط الاختلاف بين الوضعين و بالتالي فك الاختلاط الحاصل بين الوضعين المتصل و المنفصل.
يتبع ...................


_________________
[img][ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] [/img]
الرجوع الى أعلى الصفحة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى