التعامل مع ADO.NET
صفحة 1 من اصل 1 • شاطر
التعامل مع ADO.NET
بسم الله الرحمن الرحيم
أهلا بكم السادة الافاضل ...قرأت كتاب عن تقنية ADO.NET لذلك أحببت أن أنقل لكم جزء منه كما أحب أن أنوه أن الكتاب غير معروف المؤلف ...
مقدمة :
قامت مايكروسوفت بتطوير المكتبة ( ADO ) حتى وصلنا إلى الإصدار2.8 ثم قامت بعمل تطوير كلى فى الأدو وخرج الاصدار
1.00 ثم الاصدار ( ADO.Net2 ) ويأتى مع ( Visual Studio 2005 ) ويشترط للتعامل مع هذه المكتبة تركيب البرنامج
( .Net Frame Work 2 ) ويتم تركيبه اتوماتيكيا مع أى من أدوات الدوت نيت 2005. كما يمكنك تحميله على الجهاز من خلال اسطوانات الدوت نيت. وكما نعلم ان مكتبة الأدو هى خاصة بالتعامل مع قواعد البيانات و يتم من خلال هذه المكتبة الاتصال بقاعدة البيانات والتعرف عليها وتركيبها والبيانات الموجودة بداخلها كما نعلم من الاصدار السابق من الأدو،،، ولكن يوجد فى المكتبه الجديدة ADO.NET كائنات جديدة تم اصدارها غير الموجوده فى الاصدار القديم كما ان طريقة التعامل مع الاصدار الجديد اختلفت عما كانت عليه فى الاصدار السابق حيث يوجد أسلوبين للإتصال بقاعدة البيانات ولكل اسلوب له الادوات الخاصه به (كائنات – OBJECTS) :
اولا: Connected Mode:
وهو ان نتعامل مع قاعدة البيانات مباشرة كما كنا نعمل فى الأدو ADO 2.8 وهذا المتعارف عليه سابقا.
ثانيا: Disconnected Mode:
وتقوم المكتبة من خلال أحد الكائنات التي تتكون منها وهو الكائن ( Data Set ) من إنشاء قاعدة بيانات مشابهه لقاعدة البيانات الموجودة على الـ ( Server ) أو الجهاز حسب نوع قاعدة البيانات ويتم هذا نسخها في الذاكرة الخاصة بالجهاز ثم اجراء جميع التعديلات فى النسخه الوهمية التى بالذاكرة ثم عندما نصدرأمر التحديث يقوم الجهاز بعمل التحديثات التى تمت وفى الواقع هذا موجود قديما فى الأدو النسخه القديمة ولكن مع اختلاف طريقة التعامل.كما ان هذا النظام نفضل عدم التعامل معه الا فى حالة التقارير أو اى بيانات لاتريد اجراء التعديلات عليها وخاصة فى حالة وجود عدة اجهزه تعمل على نفس قاعدة البيانات.ايضا من ضمن التطويرات التى تمت على هذا الاصدار تحديث Connections و الProviders.
وتتكون مكتبة الـ ( ADO.Net 2 ) من مجموعة من الفئات نراها بالصورة التالية :-
المكونة لمكتبة الـ ( ADO.NET )
1- الكائن ( Connection ) :
من خلال هذا الكائن يمكننا الاتصال بمصدر البيانات حيث يتم تمرير مجموعة من المعاملات إلى هذا الكائن مثل ( اسم المستخدم – كلمة المرور – نوع قاعدة البيانات ويتم تحديدها عن طريق ما يسمى بالـ ( Provider ) – اسم قاعدة البيانات ) وأيضا يمكننا قطع الاتصال وكذلك تغيير قاعدة البيانات التي يتم الاتصال بها .
2- الكائن ( Command ) :
يمكننا هذا الكائن من القيام من تنفيذ جمل الاستعلام مثل (Select – Insert – Delete - ...... ) على قاعدة البيانات والتي يتم تحديدها من خلال الكائن السابق .
3- الكائن ( Data Reader ) :
بعد تنفيذ أحد جمل الاستعلام من خلال الكائن السابق فإن ناتج هذه الجملة عبارة عن مجموعة من السجلات التي يجب على المستخدم قرائتها ، يتم استخدام الكائن ( DataReader ) في قراءة السجلات التي تنتج من تنفيذ جملة الاستعلام التي يقوم الكائن ( Command ) بتنفيذها على مصدر البيانات .
4- الكائن ( Data Adapter ) :-
يقوم هذا الكائن باستقبال وارسال البيانات من وإلى مصدر البيانات وإرسالها إلى الكائن ( Data Set ) ويعتبر هذا الكائن حلقة وصل بين الكائن ( Connection ) وبين الكائن ( Data Set ) و بسبب وظيفته هذه يعتبر كائنا معقدا حيث يحتوي على أربع كائنات أخرى تساعده في أداء مهمته هي :
1- ( Select Command ) :- للقراءة من قاعدة البيانات ووضع البيانات التي يتم قرائتها في الكائن ( Data Set ) .
2- ( Update Command ) :- لإرسال التعديلات إلى مصدر البيانات .
3- ( Insert Command ) :- لإضافة بيانات جديدة إلى مصدر البيانات .
4- ( Delete Command ) :- لحذف بيانات قائمة في مصدر البيانات .
وفي التعديلات التي أجريت لاستحداث الـ ( ADO.NET 2 ) تم إنشاء كائن آخر هو الكائن ( Table Adapter ) وهو مثل الكائن ( Data Adapter ) إلا أن الكائن ( Table Adapter ) يمكنه استقبال أية بيانات من أي جدول في قاعدة البيانات المتصلة بالكائن ( Connection ) ،،، بينما الكائن ( Table Adapter ) لا يمكنه الاتصال سوى بجدول محدد مسبقا .
5- الكائن ( Data Set ) :
يعتبر هذا الكائن قوة وعصب مكتبة الـ ( ADO.Net 2 ) حيث يمكن لهذا الكائن أخذ نسخة من قاعدة البيانات التي نريد الاتصال بها ثم إجراء جميع العمليات الخاصة بالبيانات على هذه النسخة ثم رفعها لحفظ التعديلات على مصدر البيانات الرئيسي ،، وهذا كله يتم في أحد الموراد الرئيسية لنظام التشغيل ألا وهو ( الذاكرة ) ،، ليس هذا فحسب وإنما يمكننا أخذ البيانات من أكثر من قاعدة بيانات للتعامل معها ثم حفظ جميع التعديلات على مصادر البيانات الرئيسية ،،، و من ذلك نجد أن الفكرة الرئيسية التي يقوم عليها هذا الكائن هي عدم الاتصال بقاعدة البيانات أثناء التعامل معها .ويتكون هذا الكائن من كائنين رئيسين هما :
1- ( Data Table Collection ) :
حيث لا يمكن التعامل مع هذه البيانات دون النظام الموجودة عليه داخل قاعدة البيانات ( الجداول والعلاقات بين الجداول داخل قاعدة البيانات ) لذا كان لزاما إنشاء هذين الكائنين لوضع هذه البيانات بنفس الصورة التي يتم استدعاؤها من خلالها ومن خلال هذا الكائن يتم التعامل مع الجداول الموجودة داخل قاعدة البيانات ويتم اعتبار كل جدول من الجداول المكونة لقاعدة البيانات كائنا قائما بذاته ، وينقسم الكائن ( Data Table Collection ) في داخله إلى كائنات أخرى للتسهيل في عملية التعامل هي :-
الكائن ( Data Column Collection ) وهو للتعامل مع الحقول الموجودة داخل الجدول
والكائن ( Data Row Collection ) وهو للتعامل مع سجلات البيانات داخل الجدول
والكائن ( Constraint Collection ) ويتم من خلاله التعامل مع مفاتيح الأساس الموجودة داخل الجدول .
2- ( Data Relation Collection ) :فمن خلال هذا الكائن يتم التعامل مع العلاقات التي يمكن صناعتها أو تعديلها بين الجداول .ويمكن تصور هذا الكائن من خلال الشكل التالي :-
وسيتم شرح كيفية التعامل مع هذه الكائنات بالتفصيل في مرحلة قادمة إن شاء الله .
أيضا نجد أنه يمكننا الاتصال بأي نوع من أنواع قواعد البيانات من خلال مكتبة الـ ( ADO.NET 2 ) ويكون الكود المستخدم واحدا حيث لايتم الاتصال بقاعدة البيانات من خلال المكتبة بصورة مباشرة وإنما يتم اعتبار المكتبة مجرد ( InterFace ) للمبرمج يتم استخدامه لتسهيل عملية الاتصال بقاعدة البيانات حيث يتم استخدام ما يسمى بالـ ( .Net Data Providers ) والذي يتم تحميله مع برنامج ( .NET Frame Work 2 ) ويمكننا اعتباره كحلقة وصل بين أداة الـ ( ADO.Net ) وبين قاعدة البيانات التي نريد التعامل معها ونرى ذلك واضحا من خلال الصورة التالية :-
ونظرا لتعدد أنواع قواعد البيانات فإن مزودات البيانات والتي تسمى بالـ ( Providers ) هي الأخرى متعددة حيث يتم اختيار
الـ ( Provider ) المناسب للاتصال بقاعدة البيانات ونجد أن الـ ( .Net Frame Work 2 ) تدعم أربعة أنواع من هذه المزودات هي كما يلي :-
يمكننا الاتصال بقاعدة البيانات عن طريق الكائنات السابق ذكرها إلا أنني سأدعها الآن وسأقوم بشرح كيفية الاتصال بقاعدة البيانات عن طريق المعالجات ( Wizards ) التي تم إلحاقها مع البرنامج .
أولا: الاتصال بقواعد البيانات من خلال الـ Data Source Wizard
يمكننا تعريف ( Data Source Wizard ) بأنه عبارة عن المعالج الذي يتم من خلاله توفير الجهد على مستخدم أداة الـ
( ADO.Net ) في بناء مشروعه حيث من خلاله يمكننا الاتصال بقاعدة البيانات وإضافة وتعديل وحذف البيانات داخل الجداول التي نريد الاتصال بها .
مشروع على كيفية الاتصال بقاعدة البيانات من خلال الـ Wizard
دعنا نقوم بعمل مثال لمعرفة كيفية التعامل مع هذا المعالج ويكون كما يلي :-
1- نقوم بإنشاء قاعدة بيانات ولتكن باسم ( AGC ) وبها جدول بالبيانات لتسجيل بيانات المتدربين باسم (Student ) ونقوم بحفظ قاعدة البيانات في مجلد خاص بها بعيدا عن المشروع وسنعرف لما قمنا بذلك بعد ذلك .
2- نقوم بفتح برنامج الـ ( Visual Studio.Net ) واختيار إنشاء مشروع جديد من نوع ( Windows Application ) كما يلي:-
بعد اختيارنا لإنشاء مشروع من نوع جديد يجب علينا تحديد نوع المشروع المراد صناعته وكذلك يمكننا تغيير اسم المشروع ومسار حفظه وذلك على حسب ما نريد وليكن كما يلي :-
طرق إضافة المعالج إلى المشروع
بعد اختيارنا لنوع المشروع واسمه سيتم فتح البرنامج وذلك لبناء المشروع الذي نريد صناعته وقد اتفقنا أننا سنقوم ببناء مشروع للاتصال بقاعدة البيانات من خلال المعالج الخاص بالـ ( ADO ) ويتم إضافته إلى المشروع كما يلي ونجد أنه توجد أكثر من طريقة لإضافة المعالج يمكننا التعرف عليها من خلال الصورة التالية :-
نريد من خلال هذا المعالج إنشاء اتصال بين المشروع وقاعدة البيانات وبالتالي لابد من تحديد مجموعة من المعلومات التي نريد الاتصال بها مثل :-
1- نوع مصدر البيانات الذي نريد التعامل معه ويتم تحديد النوع بأنه قواعد بيانات .
2- نوع قاعدة البيانات المراد الاتصال بها ويتم تحديدها من خلال الـ ( Provider ) .
3- تحديد اسم ومسار قاعدة البيانات المراد التعامل معها .
4- تحديد الكائنات المراد الاتصال بها داخل قاعدة البيانات وفي حالتنا هذه سيكون الجدول ( Student ) .
أولا :- تحديد مصدر البيانات
تحديد مصدر البيانات التي سيتم التعامل معها من خلال البرنامج وذلك من خلال أولى شاشات المعالج وبالطبع سنقوم بتحديد النوع قواعد بيانات كما بالصورة التالية :-
ثانيا :- تحديد نوع قاعدة البيانات
فمن المتعارف عليه وجود الكثير من أنواع قواعد البيانات التي يمكننا التعامل معها وبديهي أن نحدد نوع قاعدة البيانات حتى يتم تحديد الأدوات ( نوع الـ Provider ) التي سيتم استخدامها للاتصال بقاعدة البيانات .ويتم ذلك من خلال الشاشة التالية من شاشات المعالج حيث يتم النقر على المفتاح ( New Connection ) .
بمجرد النقر على المفتاح ( New Connection ) يتم فتح مربع حوار لتحديد نوع الـ ( Provider ) الذي سيتم استخدامه في المشروع ويتم تحديده بناء على قاعدة البيانات التي نريد الاتصال بها ونظرا لأن قاعدة البيانات من نوع ( Access ) فسيتم اختيار النوع الأول كما هو موضح بالصورة التالية .
ونجد أنه بمجرد اختيار هذا النوع من قواعد البيانات يتم كتابة الـ ( Provider ) الذي سيتم استخدامه كحلقة وصل بين البرنامج وقاعدة البيانات في الجزء المخصص بذلك باسم ( Data Provider ) ونجد ذلك موضحا في الصورة السابقة ،، أيضا نجد في الصورة السابقة أداة ( Check Box ) باسم ( Always use this selection ) فإن اختياره يعني أننا نريد الاتصال مع قواعد بيانات من نوع Access من خلال هذه المعالج في كل مرة نقوم بتشغيله ،،، أما إذا كنا نريد التعامل مع أكثر من نوع من أنواع قواعد البيانات فإننا نقوم بإلغاء اختياره .
بمجرد تحديد نوع قاعدة البيانات التي نريد الاتصال بها فإن الخطوة التالية هي تحديد اسم ومسار قاعدة البيانات التي نريد الاتصال بها ويتم ذلك من خلال مربع الحوار التالي :-
بداية نلاحظ على الشاشة أنه تم كتابة نوع قاعدة البيانات الذي تم تحديده بالشاشة السابقة إلا أنه يمكننا إعادة تحديده مرة أخرى وذلك عن طريق النقر على مفتاح ( Change ) الموجود بالشاشة .
بعد ذلك يمكننا تحديد اسم ومسار قاعدة البيانات إما بكتابته بشرط التأكد من المسار كاملا ،، أو بالنقر على مفتاح ( Browse ) لاختيار قاعدة البيانات وبمجرد اختيار قاعدة البيانات سيتم كتابتها بالمسار صحيحا .
ونجد ظهور اسم ومسار قاعدة البيانات كما يلي :-
ومن خلال هذه الشاشة يتم كتابة اسم المستخدم الخاص بقاعدة البيانات وكذلك كلمة المرور الخاصة بفتح قاعدة البيانات وذلك إن وجد وللتأكد من تمام الاتصال بصورة صحيحة يمكننا النقر على مفتاح ( Test Connection ) فتظهر الرسالة التالية :-
هذه الرسالة تدل على صحة الاتصال بقاعدة البيانات التي سيتم التعامل معها من خلال قاعدة البيانات ،،، أما إذا كانت رسالة أخرى كما يلي :-
فإن هذه الرسالة تعني أن المسار الخاص بقاعدة البيانات خاطئ وليس صحيح ، أما إذا كانت رسالة الخطأ كما يلي :-
فإن هذه الرسالة تعني أن البيانات الخاصة باسم المستخدم أو كلمة المرور التي إدخالها خاطئة ، ولعلاج هاتين المشكلتين يتم التأكد من صحة مسار قاعدة البيانات أو التأكد من اسم المستخدم وكلمة المرور .وبافتراض أن الاتصال تم بصورة صحيحة يتم النقر على مفتاح ( OK ) والانتقال إلى الشاشة التالية كما يلي :-
ونجد أنه تم كتابة نوع قاعدة البيانات وكذلك اسم قاعدة البيانات وفي هذه الشاشة يمكننا النقر على علامة ( + ) الموجودة بجوار
( Connection string ) فيظهر اسم الـ ( Provider ) الذي سيتم استخدامه للاتصال بقاعدة البيانات متبوعا باسم قاعدة البيانات المراد الاتصال بها ، وبعد ذلك نقوم النقر على مفتاح التالى فتظهر الرسالة التالية :-
عدم جعل قاعدة البيانات كملف رئيسي في المشروع
وتعني هذه الرسالة تحديد مدى رغبة المستخدم في إضافة ملف قاعدة البيانات إلى المشروع أم لا ؟ وفي حالة إضافته إلى المشروع سيتم نسخ هذا الملف إلى المجلد الخاص بتشغيل البرنامج في كل مرة سيتم فيها تشغيل البرنامج وذلك في وضع التصميم .
قبل الرد على هذه الرسالة بالرفض أو الإيجاب نقوم بعرض الصور التالية والتي توضح مفات المشروع أولا مجلد المشروع الخاص بتنفيذ المشروع يمكننا رؤيته كما يلي :-
فقبل محاولة تنفيذ المشروع لتجربته نجد أن المجلد الخاص بتنفيذ البرنامج فارغا كما بالصورة السابقة كما أن المجلد الخاص بملفات المشروع قبل التنفيذ كما يلي :-
وأيضا يظهر متصفح المشروع كما يلي :-
لقد قمت بعرض الصور السابقة والتي قد يعتقد البعض عدم فائدتها إلا أنها ذات فائدة عاليه والآن نعود إلى مربع الحوار الخاص بإنشاء اتصال بقاعدة البيانات عن طريق المشروع الذي نقوم بإنشائه ونقوم بالرد على الرسالة السابقة برفض إضافة ملف قاعدة البيانات إلى المشروع والانتقال إلى الشاشة التالية ( أما بخصوص الموافقة على إضافة ملف قاعدة البيانات إلى المشروع سأقوم بتوضيح الاختلاف بينه وبين رفض إضافة ملف قاعدة البيانات إلى المشروع بعد الانتهاء من هذا المعالج ) .
تحديد الكائنات المراد الاتصال بها داخل قاعدة البيانات:
وتظهر الشاشة التالية بعد الرد على الرسالة السابقة بالرفض بتحديد الكائنات المراد إضافتها والتي سيتم التعامل معها من خلال هذا المشروع وتظهر الشاشة كما يلي :-
في هذه الشاشة نجد ظهور كائنين هما ( Tables و Views ) وعليه سنختار الكائن ( Tables ) حيث نريد من خلال هذه المشروع الاتصال بجدول الـ ( Student ) والتعامل معه من خلا ( إضافة - تعديل - حذف بيانات ) ويتم اختياره كما بالشكل التالي :-
ونجد أنه في هذه الشاشة تم تحديد اسم الكائن ( DataSet ) تلقائيا مع حرية تغيير هذا الاسم وهو الكائن الذي سيحتضن قاعدة البيانات في الذاكرة ويتم من خلاله التعامل معها ،،، وبالتالي نكون قد انتهينا من تحديد جميع المعلومات التي نريد تحديدها للاتصال بقاعدة البيانات وبالتالي نقوم بالنقر على مفتاح ( Finish ) وبالتالي يتم إغلاق هذا المربع الحواري ،،، وبمجرد الانتهاء منه يظهر متصفح المشروع كما يلي :-
إضافة الكائن ( DataSet ) إلى متصفح المشروع
نجد أنه تم إضافة الكائن ( DataSet ) والخاص بإتمام عملية الاتصال إلى متصفح المشروع ويظهر شكل صفحة الـ (Data Source) بالشكل التالي :-
فمن خلال هذه الشاشة يتم التعرف على قواعد البيانات التي تم تعيينها للاتصال بها من خلال هذا المشروع ليس هذا فحسب وإنما أيضا لمعرفة الكائنات التي سيتم الاتصال بها داخل قاعدة البيانات من خلال المشروع الذي يتم تصنيعه . وفي بعض الأحيان نجد اختفاء هذه الصفحة ويمكننا إظهارها كما يلي :-
ونظرا لأن الجزء الخاص بالـ ( Data Set ) عبارة عن مجموعة من الملفات يتم استخدامها للاتصال بقاعدة البيانات فإننا نجد إضافتها إلى ملف المشروع كما يلي :-
عرض البيانات داخل قاعدة البيانات
والآن وبعد أن قمنا بتحديد قاعدة البيانات التي نريد من البرنامج الاتصال بها والتعامل معها يمكننا عرض البيانات الموجودة بالجدول عن طريق النقر مرتين على الملف الخاص بالـ ( Data Set ) في متصفح الحل ( Solution Explorer ) :-
بمجرد النقر مرتين على الكائن تظهر الشاشة الخاصة بهذا الكائن ويتم التعامل معها كما بالصورة التالية :-
تظهر الشاشة التالية لعرض البيانات الموجودة بهذا الجدول كما يلي :-
بعد أن قمنا بعرض البيانات الموجودة داخل الجدول نقوم بإغلاق مربع الحوار الذي قام بعرض البيانات و الآن نريد أن نقوم بالتعديل في هذه البيانات فهل يمكننا القيام بذلك ؟ نعم يمكننا القيام بذلك كما يلي :-
التعديل في البيانات الموجودة داخل قاعدة البيانات
بالعودة إلى شاشة الـ ( Data Source ) نجد عرض أسماء الحقول في هذه الشاشة نقوم بالنقر على كل حقل من هذه الحقول ثم سحبه إلى الفورم يتم وضع أداة النص الخاصة بهذا الحقل وكذلك أداة عنوان باسم هذا الحقل ليس هذا فقط وإنما يتم إنشاء شريط به مجموعة من المفاتيح لإضافة وحفظ بيانات جديدة إلى الجدول الموجود بقاعدة البيانات :-
وبمجرد سحب كل الحقول وتنظيمها على الفورم يصبح شكلها كما يلي :
بمجرد النقر على مفتاح تشغيل البرنامج سيتم تشغيل البرنامج والتعامل معه لإضافة وحذف بيانات باستخدام شريط الأدوات الذي تم إضافته أعلى الفورم كما يلي :-
يمكنك تجربة المفاتيح السابقة الموجودة في الشريط أعلى الشاشة لإضافة وحفظ سجل جديد وكذلك استعراض السجلات بالتنقل بينها وأيضا حذف أحد هذه السجلات من الجدول .
ــــــــــــــــــــــــــــــــــــــــــ
عرض البيانات الموجودة داخل قاعدة البيانات
بالفورم السابقة نكون قد قمنا بإنشاء شاشة للتعديل في البيانات الموجودة داخل قاعدة البيانات ،،، ولكن هذا وحده يعتبر غير كافي إذ لابد من عرض هذه البيانات ،،، ولعرض البيانات الموجودة داخل قاعدة البيانات يمكننا إضافة شاشة أخرى لعرض البيانات عليها من خلال أداة ( DataGrid ) ، ويتم ذلك كما يلي :-
بمجرد اختيار إضافة عنصر جديد يظهر مربع الحوار التالي لاختيار إضافة فورم جديدة :-
بمجرد الرد على مربع الحوار السابق كما هو موضح بالشاشة يتم إضافة فورم جديدة يمكننا من خلالها عرض البيانات الموجودة داخل الجدول الموجود بقاعدة البيانات التي تم توصيلها بالمشروع ويتم ذلك بالوقوف على شاشة ( Data Source ) ثم النقر على اسم الجدول وسحبه على الفورم نجد ظهور أداة الداتا جريد على الفورم كما يلي :-
ويمكننا استخدام هذه الشاشة لإضافة بيانات إلى المشروع أيضا مثل الفورم الأولى إلا أنه يمكننا جعل الأداة للعرض فقط وذلك عن طريق حذف شريط الأدوات الخاص بإضافة سجل وحفظه وحذفه الموجود أعلى الفورم ثم من صفحة الخصائص الخاصة بالداتا جريد نقوم بتغيير قيم الخصائص الخاصة بإضافة بيانات أو حذفها لتصبح بالقيمة ( False ) كما بالصورة التالية :-
وللتنقل بين الشاشتين الشاشة الأولى والخاصة بإضافة وحفظ بيانات جديدة في قاعدة البيانات والشاشة الثانية لعرض البيانات ، يجب وضع أداة مفتاح على الشاشة الأولى للتوجه إلى الفورم الثانية وأداة مفتاح على الشاشة الثانية للوصول إلى الشاشة الأولى ويكون الكود الخاص بأداة المفتاح على الشاشة الأولى كما يلي :-
بينما الكود الخاص بأداة المفتاح على الشاشة الثانية كما يلي :-
جعل قاعدة البيانات كملف رئيسي في المشروع
بهذا نكون قد انتهينا من تصميم هذا المشروع باستخدام المعالج وقبل أن أنهي هذا الموضوع دعني أذكرك بما قلته لك سابقا أنه يمكننا إضافة ملف قاعدة البيانات كملف رئيسي بالمشروع كما يلي إذ كنت قد وعدتك قبل ذلك بالتعرف على كيفية إضافة ملف قاعدة البيانات كملف أساسي بالمشروع ويكون ذلك بعد تحديد اسم قاعدة البيانات من خلال المعالج وذلك بدلا من الرد على الرسالة الخاصة بإضافة ملف قاعدة البيانات كملف رئيسي بالمشروع بالرفض يتم الرد عليها بالقبول ولنرى ما الذي سيحدث .
ونقوم في هذه المرة بالموافقة على إضافة ملف قاعدة البيانات كملف رئيسي من ملفات المشروع وبعد ذلك نقوم بالرد على باقي شاشات المعالج حتى يتم الانتهاء منه ،،، وبعد أن قمنا بالموافقة على إضافة ملف قاعدة البيانات إلى ملفات المشروع فإنه من البديهي أن يتم إضافة ملف قاعدة البيانات إلى متصفح الحل الذي تظهر صورته كما يلي :-
لم يتم إضافتها إلى متصفح الحل فحسب وإنما أيضا يتم إضافتها إلى المجلد الخاص بالمشروع كما يلي :
وكذلك يتم نسخ ملف قاعدة البيانات إلى المجلد الخاص بتنفيذ المشروع كما بالصورة التالية :-
وبالطبع كلما أردنا تنفيذ البرنامج سيعاد نسخ ملف قاعدة البيانات في هذا المجلد وحذف الملف القديم لذا يجب عليك مراعاة ما الذي تريده عند إضافة قاعدة البيانات كملف رئيسي من ملفات المشروع .
عدل سابقا من قبل أبوسجود في الأربعاء سبتمبر 04, 2013 11:42 am عدل 5 مرات
أبوسجود- ......
- تاريخ التسجيل : 18/02/2011
المساهمات : 101
النقاط : 187
التقيم : 8
الجنس :
رد: التعامل مع ADO.NET
مثال :عمل مشروع لإضافة بيانات جديدة
وبعد أن قمنا بعمل هذا المشروع باستخدام المعالج تعالى معي نحاول إضافة فورم جديدة ونقوم برسم الأدوات التي تخص كل حقل على حده لنتعلم كيفية ربطها بالحقول الموجودة داخل قاعدة البيانات ،،، في هذه الحالة لن نهمل المعالج كلية وإنما سنستخدم المعالج في التعرف على قاعدة البيانات ولن نستخدمه في رسم الأدوات على الفورم ،،، وبالتالي يصبح شكل الفورم كما يلي :-
بعد ذلك نقوم بربط أدوات النص كما يلي :-
من مجموعة الخصائص ( Data Bindings ) اختيار الخاصية ( Advanced ) كما بالصورة التالية :-
بمجرد النقر على مفتاح ( Browse ) الموجود إلى جوار الخاصية ( Advanced ) سيظهر مربع الحوار التالي :-
لتحديد الحقل الذي سيتم توصيل الأداة به يتم النقر على أداة الكومبو كما هو موضوح بالصورة فيظهر الشكل التالي :-
يتم عمل هذا الموضوع مع كل الأدوات التي تم إضافتها على الفورم وذلك لتوصيل كل أدوات النص الموجودة على الفورم بالحقول داخل قاعدة البيانات .وبعد أن نقوم بتوصيل أول أداة نجد أن الفورم تحول شكلها إلى ما يلي :-
نجد أنه تم إضافة مجموعة من الأدوات التي تخص التعامل مع قواعد البيانات هي كما يلي :-
( AGCDataSet – StudentBindingSource – StudentTableAdapter )
وقبل أن نقوم ببرمجة مجموعة المفاتيح علينا أن نفهم وظائف هذه الأدوات حتى نتمكن من برمجة مجموعة المفاتيح بصورة صحيحة:-
اتفقنا أن الكائن ( AGCDataSet ) يحتضن قاعدة البيانات في الذاكرة الخاصة بالجهاز وبالتالي يتم التعامل مع هذا الكائن للإضافة والتعديل والتنقل بين السجلات حيث أنه عبارة عن نسخة كاملة من قاعدة البيانات التي يتم التعامل معها .
إلا أنه لا يمكننا التعامل مع هذا الكائن بصورة مباشرة لذلك كان لابد من وجود الكائن (StudentTableAdapter ) حيث يقوم هذا الكائن بدور الوسيط بين الكائن ( AGCDataSet ) و قاعدة البيانات فيقوم هذا الكائن بقراءة البيانات من قاعدة البيانات وإرسالها إلى الكائن ( AGCDataSet ) و في حالة العكس يقوم بأخذ التعديلات التي تم إجرائها على الكائن ( AGCDataSet ) وحفظها في قاعدة البيانات .
ولا يمكننا التعديل بصورة مباشرة في الكائن ( AGCDataSet ) لذلك كان لابد من وجود الكائن ( StudentBindingSource ) الذي يقوم بنقل التغييرات التي يقوم المستخدم بإجرائها من خلال الأدوات الموجودة على الفورم ونقلها إلى الكائن ( AGCDataSet ) لذلك كان لابد من وجود الكائن ( StudentBindingSource ) الذي يعتبر حلقة وصل بين الأدوات الموجودة على الفورم والكائن (AGCDataSet) فيقوم بقراءة السجلات وعرضها في الأدوات الموجودة على الفورم ليس هذا فحسب وإنما القراءة والإضافة .
إلا أن قاعدة البيانات لم تتأثر بهذه الإضافة لذلك كان لابد من استخدام الكائن ( StudentTableAdapter ) لنقل التعديلات من الكائن ( AGCDataSet ) إلى قاعدة البيانات .
ويمكننا رؤية هذا الموضوع عن طريق الشكل التالي :-
وبعد أن فهمنا طبيعة كل كائن من الكائنات السابقة أمكننا استخدامهم في كتابة الكود لكل مفتاح من المفاتيح السابقة كما يلي :-
أولا :- مفتاح جديد: نقوم من خلال هذا المفتاح بمخاطبة الكائن ( StudentBindingSource ) حتى يقوم بتهيئة الجدول ( Student ) الموجود لدى الكائن ( AGCDataSet ) لاستقبال سجل جديد .ويكون الأمر كما يلي :-
ليس الأمر متوقفا عند هذا ولكن نجد أن الأدوات الموجودة على الفورم تم ربطها بالأداة ( StudentBindingSource ) فنجد أنها تقوم أيضا بتفريغ هذه الأدوات لتهيئة المستخدم لإدخال سجل جديد .
ثانيا :- مفتاح حفظ ::نجد أننا كنا نخاطب الكائن ( StudentBindingSource ) لتهيئة الجدول ونظرا لأن الأدوات على الفورم مرتبطة بهذا الكائن فإنه بمجرد الكتابة بداخل الأدوات على الفورم فإننا نقوم بالكتابة داخل الجدول ( Student ) والمرتبط بهذا الكائن (StudentBindingSource) وبالتالي لإتمام عملية الحفظ علينا أن نقوم بما يلي :-
إنهاء عملية الكتابة داخل الجدول ،،، إعادة نقل البيانات من الكائن ( AGCDataSet ) إلى قاعدة البيانات ويتم نقل البيانات عن طريق الكائن (StudentTableAdapter) .وبالتالي يكون الكود كما يلي :-
ثالثا :- أوامر التنقل بين السجلات
سيتم التنقل بين السجلات عن طريق الكائن (StudentBindingSource) فهو مرتبط بالكائن ( AGCDataSet ) وبالتالي يمكنه القراءة بصورة مباشرة من السجلات داخل الجدول ( Student )الموجود لدى الكائن ( AGCDataSet ) ونجد أن أي سجل يتم قرائته من خلال الكائن (StudentBindingSource) سيتم نقلها مباشرة إلى الأدوات الموجودة على الفورم حيث أن هذه الأدوات مرتبطة بصورة مباشرة بهذا الكائن .وبالتالي تكون أكواد التنقل كما يلي :-
كود الأول :-
كود التالي :-
كود السابق :-
كود الأخير :-
بهذا نكون قد انتهينا من برمجة مجموعة المفاتيح التي قمنا بوضعها على الفورم ولكن عند تشغيل البرنامج ستظهر الفورم الأولى للبرنامج ولتشغيل الفورم الثالثة نقوم بالآتي :-
1- إما بإضافة أداة مفتاح على الفورم الأولى ونقوم ببرمجتها بالتوجه إلى الفورم الثالثة وهذه نستطيع القيام بها .
2- أو بتغيير الـ ( Start Up ) الخاصة بالمشروع وجعلها الفورم الثالثة ويكون ذلك كما يلي :-
نقوم بعمل التغيير الموجود بالصورة التالية :-
بعد ذلك نقوم بإغلاق مربع الحوار هذا ثم نقوم بتشغيل البرنامج نجد أن البداية الخاصة بالبرنامج هي بالفعل الفورم الثالثة :
نلاحظ أنه بمجرد تشغيل البرنامج تقوم أدوات النص الموجودة على الفورم بعرض بيانات السجل الأول ،،، وبالتالي يمكننا استخدام هذا البرنامج في إضافة بيانات جديدة أو التنقل بين السجلات ولكن إذا أردنا أن نقوم بعرض البيانات ماذا علينا فعله ؟
تعالى معي نقوم بإضافة فورم جديدة إلى المشروع وهي الـ ( Form4 ) وقبل أن نذهب ونقوم بتصميمها دعنا نقوم بوضع أداة مفتاح على الـ ( Form3 ) للذهاب منها إلى الفورم الرابعة ويكون كود هذا المفتاح كما يلي :-
والآن نقوم بالذهاب إلى الفورم الرابعة ونبدأ في تصميمها أولا نقوم بوضع أداة الداتا جريد التي ستقوم بعرض البيانات :
بمجرد تنزيل الأداة على الفورم تظهر كما بالصورة التالية :-
وبالنقر على السهم الموجود بالشاشة والموجود إلى جوار الخاصية ( Choose Data Source ) تظهر شاشة تساعدنا في اختيار قاعدة البيانات وهذه الشاشة سنراها مع محاولة تحديد مصدر البيانات بطريقة أخرى.إلا أنه في بعض الأحيان تختفي الشاشة التي تظهر مع الأداة فهل عندئذ لا نستطيع ربط الأداة بالجدول الذي نريد عرضه بالطبع لا يمكننا ذلك من خلال صفحة الخصائص الخاصة بهذا الأداة كما يلي :-
بالنقر على السهم الموجود بجوار الخاصية ( DataSource ) يتم فتح شاشة أخرى للمساعدة في تحديد مصدر البيانات للأداة كما يلي وهي مثل الشاشة التي تظهر عند محاولة تحديد مصدر البيانات من خلال الشاشة التي تظهر مع تنزيل الأداة مباشرة :-
بمجرد تحديد مصدر البيانات الخاص بهذه الأداة يظهر ذلك كما بالشكل التالي :-
والآن نقوم بتنفيذ البرنامج لنرى ما الذي سيحدث :-
وبعد أن قمنا بعمل هذا المشروع باستخدام المعالج تعالى معي نحاول إضافة فورم جديدة ونقوم برسم الأدوات التي تخص كل حقل على حده لنتعلم كيفية ربطها بالحقول الموجودة داخل قاعدة البيانات ،،، في هذه الحالة لن نهمل المعالج كلية وإنما سنستخدم المعالج في التعرف على قاعدة البيانات ولن نستخدمه في رسم الأدوات على الفورم ،،، وبالتالي يصبح شكل الفورم كما يلي :-
بعد ذلك نقوم بربط أدوات النص كما يلي :-
من مجموعة الخصائص ( Data Bindings ) اختيار الخاصية ( Advanced ) كما بالصورة التالية :-
بمجرد النقر على مفتاح ( Browse ) الموجود إلى جوار الخاصية ( Advanced ) سيظهر مربع الحوار التالي :-
لتحديد الحقل الذي سيتم توصيل الأداة به يتم النقر على أداة الكومبو كما هو موضوح بالصورة فيظهر الشكل التالي :-
يتم عمل هذا الموضوع مع كل الأدوات التي تم إضافتها على الفورم وذلك لتوصيل كل أدوات النص الموجودة على الفورم بالحقول داخل قاعدة البيانات .وبعد أن نقوم بتوصيل أول أداة نجد أن الفورم تحول شكلها إلى ما يلي :-
نجد أنه تم إضافة مجموعة من الأدوات التي تخص التعامل مع قواعد البيانات هي كما يلي :-
( AGCDataSet – StudentBindingSource – StudentTableAdapter )
وقبل أن نقوم ببرمجة مجموعة المفاتيح علينا أن نفهم وظائف هذه الأدوات حتى نتمكن من برمجة مجموعة المفاتيح بصورة صحيحة:-
اتفقنا أن الكائن ( AGCDataSet ) يحتضن قاعدة البيانات في الذاكرة الخاصة بالجهاز وبالتالي يتم التعامل مع هذا الكائن للإضافة والتعديل والتنقل بين السجلات حيث أنه عبارة عن نسخة كاملة من قاعدة البيانات التي يتم التعامل معها .
إلا أنه لا يمكننا التعامل مع هذا الكائن بصورة مباشرة لذلك كان لابد من وجود الكائن (StudentTableAdapter ) حيث يقوم هذا الكائن بدور الوسيط بين الكائن ( AGCDataSet ) و قاعدة البيانات فيقوم هذا الكائن بقراءة البيانات من قاعدة البيانات وإرسالها إلى الكائن ( AGCDataSet ) و في حالة العكس يقوم بأخذ التعديلات التي تم إجرائها على الكائن ( AGCDataSet ) وحفظها في قاعدة البيانات .
ولا يمكننا التعديل بصورة مباشرة في الكائن ( AGCDataSet ) لذلك كان لابد من وجود الكائن ( StudentBindingSource ) الذي يقوم بنقل التغييرات التي يقوم المستخدم بإجرائها من خلال الأدوات الموجودة على الفورم ونقلها إلى الكائن ( AGCDataSet ) لذلك كان لابد من وجود الكائن ( StudentBindingSource ) الذي يعتبر حلقة وصل بين الأدوات الموجودة على الفورم والكائن (AGCDataSet) فيقوم بقراءة السجلات وعرضها في الأدوات الموجودة على الفورم ليس هذا فحسب وإنما القراءة والإضافة .
إلا أن قاعدة البيانات لم تتأثر بهذه الإضافة لذلك كان لابد من استخدام الكائن ( StudentTableAdapter ) لنقل التعديلات من الكائن ( AGCDataSet ) إلى قاعدة البيانات .
ويمكننا رؤية هذا الموضوع عن طريق الشكل التالي :-
وبعد أن فهمنا طبيعة كل كائن من الكائنات السابقة أمكننا استخدامهم في كتابة الكود لكل مفتاح من المفاتيح السابقة كما يلي :-
أولا :- مفتاح جديد: نقوم من خلال هذا المفتاح بمخاطبة الكائن ( StudentBindingSource ) حتى يقوم بتهيئة الجدول ( Student ) الموجود لدى الكائن ( AGCDataSet ) لاستقبال سجل جديد .ويكون الأمر كما يلي :-
ليس الأمر متوقفا عند هذا ولكن نجد أن الأدوات الموجودة على الفورم تم ربطها بالأداة ( StudentBindingSource ) فنجد أنها تقوم أيضا بتفريغ هذه الأدوات لتهيئة المستخدم لإدخال سجل جديد .
ثانيا :- مفتاح حفظ ::نجد أننا كنا نخاطب الكائن ( StudentBindingSource ) لتهيئة الجدول ونظرا لأن الأدوات على الفورم مرتبطة بهذا الكائن فإنه بمجرد الكتابة بداخل الأدوات على الفورم فإننا نقوم بالكتابة داخل الجدول ( Student ) والمرتبط بهذا الكائن (StudentBindingSource) وبالتالي لإتمام عملية الحفظ علينا أن نقوم بما يلي :-
إنهاء عملية الكتابة داخل الجدول ،،، إعادة نقل البيانات من الكائن ( AGCDataSet ) إلى قاعدة البيانات ويتم نقل البيانات عن طريق الكائن (StudentTableAdapter) .وبالتالي يكون الكود كما يلي :-
ثالثا :- أوامر التنقل بين السجلات
سيتم التنقل بين السجلات عن طريق الكائن (StudentBindingSource) فهو مرتبط بالكائن ( AGCDataSet ) وبالتالي يمكنه القراءة بصورة مباشرة من السجلات داخل الجدول ( Student )الموجود لدى الكائن ( AGCDataSet ) ونجد أن أي سجل يتم قرائته من خلال الكائن (StudentBindingSource) سيتم نقلها مباشرة إلى الأدوات الموجودة على الفورم حيث أن هذه الأدوات مرتبطة بصورة مباشرة بهذا الكائن .وبالتالي تكون أكواد التنقل كما يلي :-
كود الأول :-
كود التالي :-
كود السابق :-
كود الأخير :-
بهذا نكون قد انتهينا من برمجة مجموعة المفاتيح التي قمنا بوضعها على الفورم ولكن عند تشغيل البرنامج ستظهر الفورم الأولى للبرنامج ولتشغيل الفورم الثالثة نقوم بالآتي :-
1- إما بإضافة أداة مفتاح على الفورم الأولى ونقوم ببرمجتها بالتوجه إلى الفورم الثالثة وهذه نستطيع القيام بها .
2- أو بتغيير الـ ( Start Up ) الخاصة بالمشروع وجعلها الفورم الثالثة ويكون ذلك كما يلي :-
نقوم بعمل التغيير الموجود بالصورة التالية :-
بعد ذلك نقوم بإغلاق مربع الحوار هذا ثم نقوم بتشغيل البرنامج نجد أن البداية الخاصة بالبرنامج هي بالفعل الفورم الثالثة :
نلاحظ أنه بمجرد تشغيل البرنامج تقوم أدوات النص الموجودة على الفورم بعرض بيانات السجل الأول ،،، وبالتالي يمكننا استخدام هذا البرنامج في إضافة بيانات جديدة أو التنقل بين السجلات ولكن إذا أردنا أن نقوم بعرض البيانات ماذا علينا فعله ؟
تعالى معي نقوم بإضافة فورم جديدة إلى المشروع وهي الـ ( Form4 ) وقبل أن نذهب ونقوم بتصميمها دعنا نقوم بوضع أداة مفتاح على الـ ( Form3 ) للذهاب منها إلى الفورم الرابعة ويكون كود هذا المفتاح كما يلي :-
والآن نقوم بالذهاب إلى الفورم الرابعة ونبدأ في تصميمها أولا نقوم بوضع أداة الداتا جريد التي ستقوم بعرض البيانات :
بمجرد تنزيل الأداة على الفورم تظهر كما بالصورة التالية :-
وبالنقر على السهم الموجود بالشاشة والموجود إلى جوار الخاصية ( Choose Data Source ) تظهر شاشة تساعدنا في اختيار قاعدة البيانات وهذه الشاشة سنراها مع محاولة تحديد مصدر البيانات بطريقة أخرى.إلا أنه في بعض الأحيان تختفي الشاشة التي تظهر مع الأداة فهل عندئذ لا نستطيع ربط الأداة بالجدول الذي نريد عرضه بالطبع لا يمكننا ذلك من خلال صفحة الخصائص الخاصة بهذا الأداة كما يلي :-
بالنقر على السهم الموجود بجوار الخاصية ( DataSource ) يتم فتح شاشة أخرى للمساعدة في تحديد مصدر البيانات للأداة كما يلي وهي مثل الشاشة التي تظهر عند محاولة تحديد مصدر البيانات من خلال الشاشة التي تظهر مع تنزيل الأداة مباشرة :-
بمجرد تحديد مصدر البيانات الخاص بهذه الأداة يظهر ذلك كما بالشكل التالي :-
والآن نقوم بتنفيذ البرنامج لنرى ما الذي سيحدث :-
أبوسجود- ......
- تاريخ التسجيل : 18/02/2011
المساهمات : 101
النقاط : 187
التقيم : 8
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
اليوم في 7:09 pm من طرف moslema_r
» شركة تنظيف فرشات بالرياض
الثلاثاء مارس 26, 2024 6:26 pm من طرف moslema_r
» شركة تنظيف استراحات بالرياض
الأحد مارس 24, 2024 10:49 pm من طرف moslema_r
» كشف تسربات المياه في جدة
السبت مارس 23, 2024 7:23 pm من طرف gmalnagy
» خدمات كشف تسربات المياه بخصم 25% - اتصل الان
السبت مارس 23, 2024 7:22 pm من طرف gmalnagy
» شركة تنظيف ثريات بالرياض
الخميس مارس 21, 2024 7:23 pm من طرف moslema_r
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد