التعامل مع ADO.NET

اذهب الى الأسفل

التعامل مع ADO.NET Empty التعامل مع ADO.NET

مُساهمة من طرف أبوسجود في الأربعاء سبتمبر 04, 2013 10:20 am

بسم الله الرحمن الرحيم

أهلا بكم السادة الافاضل ...قرأت كتاب عن تقنية 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 478615154
المكونة لمكتبة الـ ( 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 208859273

وسيتم شرح كيفية التعامل مع هذه الكائنات بالتفصيل في مرحلة قادمة إن شاء الله .

أيضا نجد أنه يمكننا الاتصال بأي نوع من أنواع قواعد البيانات من خلال مكتبة الـ ( ADO.NET 2 ) ويكون الكود المستخدم واحدا حيث لايتم الاتصال بقاعدة البيانات من خلال المكتبة بصورة مباشرة وإنما يتم اعتبار المكتبة مجرد ( InterFace ) للمبرمج يتم استخدامه لتسهيل عملية الاتصال بقاعدة البيانات حيث يتم استخدام ما يسمى بالـ ( .Net Data Providers ) والذي يتم تحميله مع برنامج ( .NET Frame Work 2 ) ويمكننا اعتباره كحلقة وصل بين أداة الـ ( ADO.Net ) وبين قاعدة البيانات التي نريد التعامل معها ونرى ذلك واضحا من خلال الصورة التالية :-
التعامل مع ADO.NET 792302860التعامل مع ADO.NET 773942487
ونظرا لتعدد أنواع قواعد البيانات فإن مزودات البيانات والتي تسمى بالـ ( Providers ) هي الأخرى متعددة حيث يتم اختيار
الـ ( Provider  ) المناسب للاتصال بقاعدة البيانات ونجد أن الـ ( .Net Frame Work 2 ) تدعم أربعة أنواع من هذه المزودات هي كما يلي :-

التعامل مع ADO.NET 313269120
يمكننا الاتصال بقاعدة البيانات عن طريق الكائنات السابق ذكرها إلا أنني سأدعها الآن وسأقوم بشرح كيفية الاتصال بقاعدة البيانات عن طريق المعالجات ( Wizards ) التي تم إلحاقها مع البرنامج .


أولا: الاتصال بقواعد البيانات من خلال الـ Data Source Wizard

يمكننا تعريف ( Data Source Wizard ) بأنه عبارة عن المعالج الذي يتم من خلاله توفير الجهد على مستخدم أداة الـ
( ADO.Net ) في بناء مشروعه حيث من خلاله يمكننا الاتصال بقاعدة البيانات وإضافة وتعديل وحذف البيانات داخل الجداول التي نريد الاتصال بها .

مشروع على كيفية الاتصال بقاعدة البيانات من خلال الـ Wizard

دعنا نقوم بعمل مثال لمعرفة كيفية التعامل مع هذا المعالج ويكون كما يلي :-

1- نقوم بإنشاء قاعدة بيانات ولتكن باسم ( AGC ) وبها جدول بالبيانات لتسجيل بيانات المتدربين باسم (Student  ) ونقوم بحفظ قاعدة البيانات في مجلد خاص بها بعيدا عن المشروع وسنعرف لما قمنا بذلك بعد ذلك .

التعامل مع ADO.NET 965851626
2- نقوم بفتح برنامج الـ ( Visual Studio.Net ) واختيار إنشاء مشروع جديد من نوع ( Windows Application ) كما يلي:-
التعامل مع ADO.NET 595152794

بعد اختيارنا لإنشاء مشروع من نوع جديد يجب علينا تحديد نوع المشروع المراد صناعته وكذلك يمكننا تغيير اسم المشروع ومسار حفظه وذلك على حسب ما نريد وليكن كما يلي :-

التعامل مع ADO.NET 166785277
طرق إضافة المعالج إلى المشروع

بعد اختيارنا لنوع المشروع واسمه سيتم فتح البرنامج وذلك لبناء المشروع الذي نريد صناعته وقد اتفقنا أننا سنقوم ببناء مشروع للاتصال بقاعدة البيانات من خلال المعالج الخاص بالـ ( ADO ) ويتم إضافته إلى المشروع كما يلي ونجد أنه توجد أكثر من طريقة  لإضافة المعالج يمكننا التعرف عليها من خلال الصورة التالية :-
التعامل مع ADO.NET 402459697

نريد من خلال هذا المعالج إنشاء اتصال بين المشروع وقاعدة البيانات وبالتالي لابد من تحديد مجموعة من المعلومات التي نريد الاتصال بها مثل :-

1- نوع مصدر البيانات الذي نريد التعامل معه ويتم تحديد النوع بأنه قواعد بيانات .
2- نوع قاعدة البيانات المراد الاتصال بها ويتم تحديدها من خلال الـ ( Provider ) .
3- تحديد اسم ومسار قاعدة البيانات المراد التعامل معها .
4- تحديد الكائنات المراد الاتصال بها داخل قاعدة البيانات وفي حالتنا هذه سيكون الجدول ( Student ) .

أولا :- تحديد مصدر البيانات
تحديد مصدر البيانات التي سيتم التعامل معها من خلال البرنامج وذلك من خلال أولى شاشات المعالج وبالطبع سنقوم بتحديد النوع قواعد بيانات كما بالصورة التالية :-

التعامل مع ADO.NET 542466296

ثانيا :- تحديد نوع قاعدة البيانات
فمن المتعارف عليه وجود الكثير من أنواع قواعد البيانات التي يمكننا التعامل معها وبديهي أن نحدد نوع قاعدة البيانات حتى يتم تحديد الأدوات ( نوع الـ Provider ) التي سيتم استخدامها للاتصال بقاعدة البيانات .ويتم ذلك من خلال الشاشة التالية من شاشات المعالج حيث يتم النقر على المفتاح ( New Connection ) .
التعامل مع ADO.NET 756567114

بمجرد النقر على المفتاح ( New Connection ) يتم فتح مربع حوار لتحديد نوع الـ ( Provider ) الذي سيتم استخدامه في المشروع ويتم تحديده بناء على قاعدة البيانات التي نريد الاتصال بها ونظرا لأن قاعدة البيانات من نوع ( Access ) فسيتم اختيار النوع الأول كما هو موضح بالصورة التالية .

التعامل مع ADO.NET 437694405

ونجد أنه بمجرد اختيار هذا النوع من قواعد البيانات يتم كتابة الـ ( Provider ) الذي سيتم استخدامه كحلقة وصل بين البرنامج وقاعدة البيانات في الجزء المخصص بذلك باسم ( Data Provider ) ونجد ذلك موضحا في الصورة السابقة ،، أيضا نجد في الصورة السابقة أداة ( Check Box ) باسم ( Always use this selection ) فإن اختياره يعني أننا نريد الاتصال مع قواعد بيانات من نوع Access من خلال هذه المعالج في كل مرة نقوم بتشغيله ،،، أما إذا كنا نريد التعامل مع أكثر من نوع من أنواع قواعد البيانات فإننا نقوم بإلغاء اختياره .

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

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

بعد ذلك يمكننا تحديد اسم ومسار قاعدة البيانات إما بكتابته بشرط التأكد من المسار كاملا ،، أو بالنقر على مفتاح ( Browse ) لاختيار قاعدة البيانات وبمجرد اختيار قاعدة البيانات سيتم كتابتها بالمسار صحيحا .

التعامل مع ADO.NET 545309131
ونجد ظهور اسم ومسار قاعدة البيانات كما يلي :-
التعامل مع ADO.NET 936696974

ومن خلال هذه الشاشة يتم كتابة اسم المستخدم الخاص بقاعدة البيانات وكذلك كلمة المرور الخاصة بفتح قاعدة البيانات وذلك إن وجد وللتأكد من تمام الاتصال بصورة صحيحة يمكننا النقر على مفتاح ( Test Connection ) فتظهر الرسالة التالية :-

التعامل مع ADO.NET 640367174

هذه الرسالة تدل على صحة الاتصال بقاعدة البيانات التي سيتم التعامل معها من خلال قاعدة البيانات ،،، أما إذا كانت رسالة أخرى كما يلي :-
التعامل مع ADO.NET 229682338

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



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

ونجد أنه تم كتابة نوع قاعدة البيانات وكذلك اسم قاعدة البيانات وفي هذه الشاشة يمكننا النقر على علامة ( + ) الموجودة بجوار
( Connection string ) فيظهر اسم الـ ( Provider ) الذي سيتم استخدامه للاتصال بقاعدة البيانات متبوعا باسم قاعدة البيانات المراد الاتصال بها ، وبعد ذلك نقوم النقر على مفتاح التالى فتظهر الرسالة التالية :-

التعامل مع ADO.NET 935922223

عدم جعل قاعدة البيانات كملف رئيسي في المشروع

وتعني هذه الرسالة تحديد مدى رغبة المستخدم في إضافة ملف قاعدة البيانات إلى المشروع أم لا ؟ وفي حالة إضافته إلى المشروع سيتم نسخ هذا الملف إلى المجلد الخاص بتشغيل البرنامج في كل مرة سيتم فيها تشغيل البرنامج وذلك في وضع التصميم .
قبل الرد على هذه الرسالة بالرفض أو الإيجاب نقوم بعرض الصور التالية والتي توضح مفات المشروع أولا مجلد المشروع الخاص بتنفيذ المشروع يمكننا رؤيته كما يلي :-
التعامل مع ADO.NET 268024426

فقبل محاولة تنفيذ المشروع لتجربته نجد أن المجلد الخاص بتنفيذ البرنامج فارغا كما بالصورة السابقة كما أن المجلد الخاص بملفات المشروع قبل التنفيذ كما يلي :-
التعامل مع ADO.NET 403943752

وأيضا يظهر متصفح المشروع كما يلي :-
التعامل مع ADO.NET 629421561

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


تحديد الكائنات المراد الاتصال بها داخل قاعدة البيانات:

وتظهر الشاشة التالية بعد الرد على الرسالة السابقة بالرفض بتحديد الكائنات المراد إضافتها والتي سيتم التعامل معها من خلال هذا المشروع وتظهر الشاشة كما يلي :-
التعامل مع ADO.NET 519729029

في هذه الشاشة نجد ظهور كائنين هما ( Tables و Views ) وعليه سنختار الكائن ( Tables ) حيث نريد من خلال هذه المشروع الاتصال بجدول الـ ( Student ) والتعامل معه من خلا ( إضافة - تعديل - حذف بيانات ) ويتم اختياره كما بالشكل التالي :-
التعامل مع ADO.NET 414628658

ونجد أنه في هذه الشاشة تم تحديد اسم الكائن ( DataSet ) تلقائيا مع حرية تغيير هذا الاسم وهو الكائن الذي سيحتضن قاعدة البيانات في الذاكرة ويتم من خلاله التعامل معها ،،، وبالتالي نكون قد انتهينا من تحديد جميع المعلومات التي نريد تحديدها للاتصال بقاعدة البيانات وبالتالي نقوم بالنقر على مفتاح ( Finish ) وبالتالي يتم إغلاق هذا المربع الحواري ،،، وبمجرد الانتهاء منه يظهر متصفح المشروع كما يلي :-
التعامل مع ADO.NET 634613078

إضافة الكائن ( DataSet ) إلى متصفح المشروع

نجد أنه تم إضافة الكائن ( DataSet ) والخاص بإتمام عملية الاتصال إلى متصفح المشروع ويظهر شكل صفحة الـ (Data Source) بالشكل التالي :-
التعامل مع ADO.NET 719390002

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

ونظرا لأن الجزء الخاص بالـ ( Data Set ) عبارة عن مجموعة من الملفات يتم استخدامها للاتصال بقاعدة البيانات فإننا نجد إضافتها إلى ملف المشروع كما يلي :-
التعامل مع ADO.NET 813688632
وإذا تذكرت معي الرسالة التي قمنا بالرد عليها بعدم إضافة ملف قاعدة البيانات كملف رئيسي بالمشروع فإننا لا نجد احتواء هذا المجلد على ملف قاعدة البيانات حيث قمنا بإنشاء ملف قاعدة البيانات في مكان آخر بعيدا عن المشروع ،،، ليس هذا فقط وأيضا لم يتم نسخ قاعدة البيانات إلى المجلد الخاص بتنفيذ المشروع الذي يظهر بالصورة التالية بمجرد النقر على مفتاح التشغيل وتشغيل البرنامج وإغلاقه حيث أنه لا توجد أية فائدة من تشغيل البرنامج في الوقت الحالي :

التعامل مع ADO.NET 685088080


عرض البيانات داخل قاعدة البيانات

والآن وبعد أن قمنا بتحديد قاعدة البيانات التي نريد من البرنامج الاتصال بها والتعامل معها يمكننا عرض البيانات الموجودة بالجدول عن طريق النقر مرتين على الملف الخاص بالـ ( Data Set ) في متصفح الحل ( Solution Explorer ) :-

التعامل مع ADO.NET 421173460

بمجرد النقر مرتين على الكائن تظهر الشاشة الخاصة بهذا الكائن ويتم التعامل معها كما بالصورة التالية :-
التعامل مع ADO.NET 979953856

تظهر الشاشة التالية لعرض البيانات الموجودة بهذا الجدول كما يلي :-
التعامل مع ADO.NET 444512226
التعامل مع ADO.NET 808216545

بعد أن قمنا بعرض البيانات الموجودة داخل الجدول نقوم بإغلاق مربع الحوار الذي قام بعرض البيانات و الآن نريد أن نقوم بالتعديل في هذه البيانات فهل يمكننا القيام بذلك ؟ نعم يمكننا القيام بذلك كما يلي :-


التعديل في البيانات الموجودة داخل قاعدة البيانات

بالعودة إلى  شاشة الـ ( Data Source ) نجد عرض أسماء الحقول في هذه الشاشة نقوم بالنقر على كل حقل من هذه الحقول ثم سحبه إلى الفورم يتم وضع أداة النص الخاصة بهذا الحقل وكذلك أداة عنوان باسم هذا الحقل ليس هذا فقط وإنما يتم إنشاء شريط به مجموعة من المفاتيح لإضافة وحفظ بيانات جديدة إلى الجدول الموجود بقاعدة البيانات :-
التعامل مع ADO.NET 404058944

وبمجرد سحب كل الحقول وتنظيمها على الفورم يصبح شكلها كما يلي :
التعامل مع ADO.NET 214152456

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

يمكنك تجربة المفاتيح السابقة الموجودة في الشريط أعلى الشاشة لإضافة وحفظ سجل جديد وكذلك استعراض السجلات بالتنقل بينها وأيضا حذف أحد هذه السجلات من الجدول .
ــــــــــــــــــــــــــــــــــــــــــ

عرض البيانات الموجودة داخل قاعدة البيانات

بالفورم السابقة نكون قد قمنا بإنشاء شاشة للتعديل في البيانات الموجودة داخل قاعدة البيانات ،،، ولكن هذا وحده يعتبر غير كافي إذ لابد من عرض هذه البيانات ،،، ولعرض البيانات الموجودة داخل قاعدة البيانات يمكننا إضافة شاشة أخرى لعرض البيانات عليها من خلال أداة ( DataGrid ) ، ويتم ذلك كما يلي :-
التعامل مع ADO.NET 100063313

بمجرد اختيار إضافة عنصر جديد يظهر مربع الحوار التالي لاختيار إضافة فورم جديدة :-
التعامل مع ADO.NET 664164390

بمجرد الرد على مربع الحوار السابق كما هو موضح بالشاشة يتم إضافة فورم جديدة يمكننا من خلالها عرض البيانات الموجودة داخل الجدول الموجود بقاعدة البيانات التي تم توصيلها بالمشروع ويتم ذلك بالوقوف على شاشة ( Data Source ) ثم النقر على اسم الجدول وسحبه على الفورم نجد ظهور أداة الداتا جريد على الفورم كما يلي :-

التعامل مع ADO.NET 971228994


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

التعامل مع ADO.NET 383975244

التعامل مع ADO.NET 759555593

وللتنقل بين الشاشتين الشاشة الأولى والخاصة بإضافة وحفظ بيانات جديدة في قاعدة البيانات والشاشة الثانية لعرض البيانات ، يجب وضع أداة مفتاح على الشاشة الأولى للتوجه إلى الفورم الثانية وأداة مفتاح على الشاشة الثانية للوصول إلى الشاشة الأولى ويكون الكود الخاص بأداة المفتاح على الشاشة الأولى كما يلي :-

التعامل مع ADO.NET 816716574

بينما الكود الخاص بأداة المفتاح على الشاشة الثانية كما يلي :-

التعامل مع ADO.NET 672195330
جعل قاعدة البيانات كملف رئيسي في المشروع

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

ونقوم في هذه المرة بالموافقة على إضافة ملف قاعدة البيانات كملف رئيسي من ملفات المشروع وبعد ذلك نقوم بالرد على باقي شاشات المعالج حتى يتم الانتهاء منه ،،، وبعد أن قمنا بالموافقة على إضافة ملف قاعدة البيانات إلى ملفات المشروع فإنه من البديهي أن يتم إضافة ملف قاعدة البيانات إلى متصفح الحل الذي تظهر صورته كما يلي :-
التعامل مع ADO.NET 526569119

لم يتم إضافتها إلى متصفح الحل فحسب وإنما أيضا يتم إضافتها إلى المجلد الخاص بالمشروع كما يلي :

التعامل مع ADO.NET 337534880

وكذلك يتم نسخ ملف قاعدة البيانات إلى المجلد الخاص بتنفيذ المشروع كما بالصورة التالية :-

التعامل مع ADO.NET 387485315

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


عدل سابقا من قبل أبوسجود في الأربعاء سبتمبر 04, 2013 11:42 am عدل 5 مرات
avatar
أبوسجود
......
......

تاريخ التسجيل : 18/02/2011
المساهمات : 101
النقاط : 187
التقيم : 8
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

التعامل مع ADO.NET Empty رد: التعامل مع ADO.NET

مُساهمة من طرف أبوسجود في الأربعاء سبتمبر 04, 2013 10:47 am

مثال :عمل مشروع لإضافة بيانات جديدة

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

بعد ذلك نقوم بربط أدوات النص كما يلي :-

من مجموعة الخصائص ( Data Bindings ) اختيار الخاصية ( Advanced ) كما بالصورة التالية :-


بمجرد النقر على مفتاح ( Browse ) الموجود إلى جوار الخاصية ( Advanced ) سيظهر مربع الحوار التالي :-


لتحديد الحقل الذي سيتم توصيل الأداة به يتم النقر على أداة الكومبو كما هو موضوح بالصورة فيظهر الشكل التالي :-


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

نجد أنه تم إضافة مجموعة من الأدوات التي تخص التعامل مع قواعد البيانات هي كما يلي :-
( AGCDataSetStudentBindingSourceStudentTableAdapter )

وقبل أن نقوم ببرمجة مجموعة المفاتيح علينا أن نفهم وظائف هذه الأدوات حتى نتمكن من برمجة مجموعة المفاتيح بصورة صحيحة:-
اتفقنا أن الكائن ( 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 ) يتم فتح شاشة أخرى للمساعدة في تحديد مصدر البيانات للأداة كما يلي وهي مثل الشاشة التي تظهر عند محاولة تحديد مصدر البيانات من خلال الشاشة التي تظهر مع تنزيل الأداة مباشرة :-


بمجرد تحديد مصدر البيانات الخاص بهذه الأداة يظهر ذلك كما بالشكل التالي :-


والآن نقوم بتنفيذ البرنامج لنرى ما الذي سيحدث :-
avatar
أبوسجود
......
......

تاريخ التسجيل : 18/02/2011
المساهمات : 101
النقاط : 187
التقيم : 8
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى