SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
hamza
‫قواعد‬ ‫ربط‬‫قواعد‬ ‫ربط‬‫البيانات‬‫البيانات‬AAcccceessss‫و‬‫و‬SSqqll sseerrvveerr
‫الـ‬ ‫بلغة‬‫الـ‬ ‫بلغة‬cc##‫تقنية‬ ‫باستخدام‬‫تقنية‬ ‫باستخدام‬aaddoo..nneett
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
2
‫إهداء‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
3
‫واإلس‬ ‫األكسس‬ ‫البيانات‬ ‫بقواعد‬ ‫شارب‬ ‫السي‬ ‫برامج‬ ‫ربط‬ ‫شرح‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫نتناول‬
‫النقطة‬ ‫هذه‬ ‫على‬ ‫ركزوا‬ ‫ولكن‬ ‫باإلكسس‬ ‫هو‬ ‫الشرح‬ ‫اغلب‬ ‫كان‬ ‫وان‬ ‫وحتى‬ ‫سرفر‬ ‫إل‬ ‫كيو‬
‫نص‬ ‫واختالف‬ ‫األسماء‬ ‫مجال‬ ‫اختالف‬ ‫هو‬ ‫القاعدتين‬ ‫مابين‬ ‫الشرح‬ ‫في‬ ‫البسيط‬ ‫التغيير‬ ‫أن‬
‫و‬ ‫االتصال‬‫ا‬ ‫الشرح‬ ‫استخدام‬ ‫تستطيع‬‫سرفر‬ ‫إل‬ ‫كيو‬ ‫االس‬ ‫لغة‬ ‫في‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫لمقدم‬
‫السابقتين‬ ‫النقطتين‬ ‫بعد‬ ‫عليك‬ ‫فما‬‫الـ‬ ‫تتبع‬ ‫التي‬ ‫الكائنات‬ ‫اشتقاق‬ ‫تغير‬ ‫أن‬ ‫إال‬
(OLDEB( ‫فئة‬ ً‫ال‬‫مث‬ )OleDbConnection‫بيانات‬ ‫قاعدة‬ ‫بإستخدام‬ ‫اإلتصال‬ ‫فئة‬ ‫هي‬ )
‫إل‬ ‫كيو‬ ‫اإلس‬ ‫بيانات‬ ‫قاعدة‬ ‫استخدام‬ ‫عند‬ ‫انه‬ ‫واألختالف‬ ‫األكسس‬ ‫نوع‬ ‫من‬‫اننا‬ ‫سرفر‬
( ‫كلمة‬ ‫نغير‬OLDEB( ‫بكلمة‬ )SQL( ‫هكذا‬ ‫سيصبح‬ ‫يعني‬ )SQLConnection‫كل‬ ‫وفي‬ )
( ‫بكلمة‬ ‫تبدأ‬ ‫الذي‬ ‫الفئات‬OLDEB(‫بكلمة‬ ‫إستبدالها‬ ‫سوى‬ ‫علينا‬ ‫ما‬ )SQL. )
‫و‬‫بالعربية‬ ‫مناهج‬ ‫وجود‬ ‫في‬ ‫صعوبة‬ ‫من‬ ‫القيته‬ ‫ما‬ ‫هو‬ ‫الكتاب‬ ‫هذا‬ ‫ألكتب‬ ‫دعاني‬ ‫ما‬ ‫إن‬
‫وأ‬ ‫اإلجراءات‬ ‫لهذه‬ ‫المبسط‬ ‫الشرح‬ ‫تقدم‬‫أي‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫كتبته‬ ‫ما‬ ‫من‬ ‫يستفيد‬ ‫أن‬ ‫رجوا‬
‫تراسلوني‬ ‫أن‬ ‫منكم‬ ‫ارجوا‬ ‫أسئلة‬ ‫أية‬ ‫هناك‬ ‫كان‬ ‫وأن‬ ‫تقصير‬ ‫أي‬ ‫عن‬ ‫وأعذروني‬ ‫شخص‬
. ‫اإليميالت‬ ‫احد‬ ‫على‬
‫لكم‬ ‫امتناني‬
‫ُعسي‬‫ب‬‫ال‬ ‫حزام‬ ‫عبده‬ ‫محمد‬ ‫علي‬ ‫حمزة‬
‫حاسوب‬ ‫برمجة‬-‫اليمن‬
‫مقدمة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
4
‫بدرس‬ ‫البسيطة‬ ‫دروسنا‬ ‫من‬ ‫درس‬ ‫أول‬ ‫سنبدأ‬‫في‬ ‫بسيطة‬ ‫بيانات‬ ‫قاعدة‬ ‫إنشاء‬ ‫كيفية‬
. ‫األكسس‬
‫ثم‬ ‫البرامج‬ ‫كافة‬ ‫ثم‬ ‫ابدأ‬ ‫قائمة‬ ‫على‬ ‫نضغط‬Microsoft Office‫ثم‬Microsoft
Office Access‫وبعد‬‫أن‬‫على‬ ‫نضغط‬ ‫البرنامج‬ ‫واجهة‬ ‫لنا‬ ‫تفتح‬(‫بيانات‬ ‫قاعدة‬
‫فارغة‬)‫الصورة‬ ‫في‬ ‫كما‬
1/‫جديدة‬ ‫فارغة‬ ‫بيانات‬ ‫قاعدة‬
2/‫البيانات‬ ‫قاعدة‬ ‫تسمية‬‫باالسم‬‫تشاء‬ ‫الذي‬
3/‫المكان‬ ‫واختر‬ ‫استعراض‬ ‫على‬ ‫اضغط‬ ‫تنشئها‬ ‫سوف‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫حفظ‬ ‫مكان‬
‫الذي‬‫تريده‬
‫المثال‬ ‫هذا‬ ‫وفي‬‫أنا‬‫االسم‬ ‫استخدمت‬lesson7
‫على‬ ‫الضغط‬ ‫ثم‬ ‫ومن‬‫إنشاء‬‫ليتم‬‫إنشاء‬‫بك‬ ‫الخاصة‬ ‫البيانات‬ ‫قاعدة‬.
-‫الواجهة‬ ‫هذه‬ ‫لنا‬ ‫تفتح‬
‫األكسس‬ ‫في‬ ‫مقدمة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
5
1/‫على‬ ‫الضغط‬(‫عرض‬)‫الجديد‬ ‫الجدول‬ ‫تصميم‬ ‫إلظهار‬ ‫الشاشة‬ ‫يمين‬ ‫أعلى‬ ‫في‬
2/‫تريده‬ ‫الذي‬ ‫االسم‬ ‫اختر‬ ‫الجديد‬ ‫الجدول‬ ‫بتسمية‬ ‫نقوم‬ ‫أن‬ ‫منا‬ ‫يطلب‬.
‫و‬‫أنا‬‫باالسم‬ ‫عليه‬ ‫بالتطبيق‬ ‫نقوم‬ ‫سوف‬ ‫الذي‬ ‫الجدول‬ ‫أسميت‬ ‫قد‬friends
‫من‬ ‫نحتاج‬ ‫وكما‬ ‫نريد‬ ‫كما‬ ‫جدولنا‬ ‫بتصميم‬ ‫فنقوم‬ ‫التصميم‬ ‫صفحة‬ ‫لنا‬ ‫تفتح‬ ‫ذلك‬ ‫بعد‬
‫أعمدة‬‫وأنواعها‬‫البيانية‬
1/‫بتعبئة‬ ‫قمنا‬‫أسماء‬‫األعمدة‬‫احتياجنا‬ ‫حسب‬ ‫لها‬ ‫البياني‬ ‫والنوع‬ ‫الجدول‬ ‫في‬
‫الصديق‬ ‫رقم‬ ‫واخترنا‬‫أو‬(fri_no)‫مفتاح‬ ‫ليكون‬‫أساسي‬
2/‫على‬ ‫بالضغط‬ ‫البيانات‬ ‫ورقة‬ ‫عرض‬ ‫طريقة‬ ‫في‬ ‫الجدول‬ ‫لعرض‬ ‫نعود‬(‫عرض‬)
‫نعم‬ ‫على‬ ‫بالظغط‬ ‫بنوافق‬ ‫به‬ ‫ماقمنا‬ ‫حفظنا‬ ‫قد‬ ‫نكن‬ ‫لم‬ ‫ان‬ ‫الحفظ‬ ‫تريد‬ ‫هل‬ ‫لنا‬ ‫تظهر‬ ‫سوف‬.
‫باع‬ ‫الجدول‬ ‫لنا‬ ‫ليظهر‬‫بالبيانات‬ ‫بتعبئتها‬ ‫نقوم‬ ‫البيانات‬ ‫من‬ ‫خالية‬ ‫مدته‬
‫األكسس‬ ‫في‬ ‫مقدمة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
6
ً‫ا‬‫تقريب‬ ‫هكذا‬ ‫الحفظ‬ ‫قبل‬ ‫شكلها‬ ‫ويكون‬ ‫بالحفظ‬ ‫بعدها‬ ‫ونقوم‬
‫االكسس‬ ‫برنامج‬ ‫نغلق‬.
‫األكسس‬ ‫في‬ ‫مقدمة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
7
‫التي‬ ‫التقنية‬ ‫هذه‬ ‫عن‬ ‫األمور‬ ‫بعض‬ ‫نعرف‬ ‫ان‬ ‫يجب‬ ‫وطريقته‬ ‫الربط‬ ‫في‬ ‫ندخل‬ ‫ان‬ ‫قبل‬
‫تقنية‬ ‫وهي‬ ‫مايكروسوفت‬ ‫شركة‬ ‫ابتكرتها‬ado.net‫في‬ ‫نستخدمها‬ ‫التي‬ ‫التقنية‬ ‫وهي‬
‫الربط‬ ‫عملية‬.
‫ما‬ ‫هناك‬‫لتقنية‬ ‫السبعة‬ ‫باألعمدة‬ ‫يسمى‬ado.net‫او‬ ‫كالسات‬ ‫وهي‬ ‫مايكروسوفت‬ ‫من‬
‫وهي‬ ‫المختلفة‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫الواجهات‬ ‫برامج‬ ‫ربط‬ ‫بعملية‬ ‫للتحكم‬ ‫لنا‬ ‫تقدمها‬ ‫فئات‬
1.‫فئة‬‫االتصال‬(connection. )
‫المخصصة‬ ‫الفئة‬ ‫وهي‬‫لالتصال‬‫وما‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫فيحدد‬ ‫البيانات‬ ‫بقواعد‬
‫ذلك‬ ‫وغير‬ ‫المستخدم‬ ‫واسم‬ ‫كالتشفير‬ ‫وسائط‬ ‫من‬ ‫بذلك‬ ‫يتعلق‬.
2.‫األمر‬ ‫فئة‬(command.)
‫أوامر‬ ‫من‬ ‫ما‬ ‫أمر‬ ‫لتنفيذ‬ ‫المخصصة‬ ‫الفئة‬ ‫وهي‬SQL‫المختلفة‬,‫إجراء‬ ‫أي‬ ‫أو‬
‫البيانات‬ ‫قاعدة‬ ‫إدارة‬ ‫نظام‬ ‫في‬ ‫مخزن‬.
3.‫البيانات‬ ‫قارئ‬ ‫فئة‬(Data Reader.)
‫المتصل‬ ‫النمط‬ ‫في‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫فقط‬ ‫للقراءة‬ ‫تستخدم‬,‫يمكن‬ ‫والبيانات‬
‫الخلف‬ ‫إلى‬ ‫الرجوع‬ ‫يمكن‬ ‫وال‬ ‫األمام‬ ‫إلى‬ ‫قراءتها‬,‫وتعتبر‬ ‫االستعالم‬ ‫بفئة‬ ‫وذلك‬
ً‫ا‬‫جد‬ ‫عالي‬ ‫أداء‬ ‫ذات‬.
4.‫مهيئ‬ ‫فئة‬(‫موصل‬)‫البيانات‬(Data Adapter.)
‫البيانات‬ ‫تعبئة‬ ‫على‬ ‫الفئة‬ ‫هذه‬ ‫تعمل‬‫مجموعة‬ ‫إلى‬ ‫البيانات‬ ‫قواعد‬ ‫من‬ ‫المختلفة‬
‫معينة‬ ‫بيانات‬Dataset,‫مجموعة‬ ‫على‬ ‫أجريت‬ ‫التي‬ ‫التعديالت‬ ‫بتنفيذ‬ ‫تقوم‬ ‫كما‬
‫البيانات‬ ‫قواعد‬ ‫على‬ ‫وعكسها‬ ‫البيانات‬ ‫من‬.
5.‫البيانات‬ ‫مجموعة‬ ‫فئة‬(Dataset.)
‫وتسمح‬ ‫الذاكرة‬ ‫في‬ ‫البيانات‬ ‫فيها‬ ‫تخزن‬ ‫البرمجية‬ ‫األنظمة‬ ‫من‬ ‫مجموعة‬ ‫هي‬
‫بإدارتها‬.‫تمكننا‬ ‫الذاكرة‬ ‫في‬ ‫موجودة‬ ‫صغيرة‬ ‫بيانات‬ ‫قاعدة‬ ‫عن‬ ‫عبارة‬ ‫وهي‬ ً‫ا‬‫أيض‬
‫جداول‬ ‫انشاء‬ ‫من‬‫ال‬ ‫وهي‬ ‫بعالقات‬ ‫الجداول‬ ‫هذه‬ ‫وربط‬‫بيانات‬ ‫مصدر‬ ‫على‬ ‫تعتمد‬
‫محدد‬.
6.‫األمر‬ ‫باني‬ ‫فئة‬(CommandBuilder.)
‫الــ‬ ‫قبل‬ ‫من‬ ‫الفئة‬ ‫هذه‬ ‫تستخدم‬Data Adapter‫الختيار‬‫وتحديث‬ ‫وإدخال‬
‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫السجالت‬ ‫وحذف‬,‫على‬ ‫ولكن‬ ‫األمر‬ ‫فئة‬ ‫بعمل‬ ‫تقوم‬ ‫الفئة‬ ‫فهذه‬
‫البيانات‬ ‫مهيئ‬ ‫نوع‬ ‫من‬ ‫فئة‬.
7.‫البيانات‬ ‫ربط‬ ‫فئة‬(Bindingsource.)
‫أداة‬ ‫خصائص‬ ‫بإحدى‬ ‫ما‬ ‫فئة‬ ‫خصائص‬ ‫إحدى‬ ‫قيمة‬ ‫لربط‬ ‫المخصصة‬ ‫الفئة‬ ‫وهي‬
‫معينة‬,‫و‬ ‫يتم‬ ‫بحيث‬‫ض‬‫تلقا‬ ‫األداة‬ ‫خاصية‬ ‫قيمة‬ ‫ع‬‫تغيرت‬ ‫كلما‬ ‫ئيا‬,‫والعكس‬...
‫في‬ ‫مقدمة‬ado.net
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
8
‫واحدة‬ ‫خاصية‬ ‫كأنهما‬ ‫الخاصيتين‬ ‫تصبح‬ ‫وبإختصار‬.‫الفئة‬ ‫هذه‬ ‫استخدام‬ ‫أن‬ ‫أي‬
‫األداة‬ ‫خصائص‬ ‫إحدى‬ ‫محتويات‬ ‫ربط‬ ‫في‬(‫لمربع‬ ‫التابعة‬ ‫النص‬ ‫خاصية‬ ‫مثل‬
‫النص‬. )
‫تستطيع‬ ‫وال‬ ‫مهم‬ ‫فهو‬ ‫عنه‬ ‫نتحدث‬ ‫وأن‬ ‫البد‬ ‫آخر‬ ‫شيئا‬ ‫هناك‬‫أن‬‫نفسك‬ ‫عن‬ ‫تقول‬‫أن‬
‫تقنية‬ ‫استخدام‬ ‫بإمكانك‬ado.net‫وهي‬ ‫به‬ ‫معرفة‬ ‫بدون‬(providers)‫وهي‬
‫و‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫وسيطات‬‫االتصال‬(connection)‫وهي‬‫أنواع‬‫تعتمد‬
‫الربط‬ ‫في‬ ‫المستخدمة‬ ‫البيانات‬ ‫قاعدة‬ ‫نوع‬ ‫على‬‫ولن‬‫أتعمق‬ً‫ا‬‫كثير‬ ‫فيها‬‫فهو‬
‫بعض‬ ‫وسأذكر‬ ‫للمبتدئين‬‫أنواعها‬:
‫مزود‬‫الـ‬SQL Server‫التالي‬ ‫بالشكل‬ ‫ويكتب‬
Provider=SqlOLEDB;
‫األكسس‬ ‫مزود‬
‫أكسس‬2003
Provider=Microsoft.Jet.OLEDB.4.0;
‫أكسس‬2007
Provider=Microsoft.ACE.OLEDB.12.0;
‫أكثر‬ ‫األمر‬ ‫لكم‬ ‫سيوضح‬ ‫التطبيق‬ ‫فإن‬ ‫جيد‬ ‫بشكل‬ ‫السابق‬ ‫تستوعبوا‬ ‫لم‬ ‫وإن‬ ‫حتى‬
‫الكالسات‬ ‫هذه‬ ‫من‬ ‫بعض‬ ‫وسنستخدم‬(‫الفئات‬)‫للربط‬ ‫األول‬ ‫مشروعنا‬ ‫في‬
‫ندخل‬ ‫وسوف‬‫إلى‬‫ف‬ ‫بالذهن‬ ‫لتترسخ‬ ‫األخرى‬ ‫تلو‬ ‫واحدة‬ ‫الربط‬ ‫طرق‬‫بنا‬ ‫هيا‬.
‫في‬ ‫مقدمة‬ado.net
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
9
-‫البرنامج‬ ‫واجهة‬ ‫في‬ ‫ستوديو‬ ‫الفيجوال‬ ‫نفتح‬
‫شارب‬ ‫السي‬ ‫بلغة‬ ‫جديد‬ ‫مشروع‬ ‫نفتح‬
File >> new >> project>>visual c#
>>windows>>windows form application
‫الواجهة‬ ‫هذه‬ ‫ونصمم‬
‫بعض‬ ‫بترقيم‬ ‫قمت‬‫األدوات‬ً‫ا‬‫جيد‬ ‫الكود‬ ‫نفهم‬ ‫لكي‬ ‫أسماءها‬ ‫لكم‬ ‫ألكتب‬ ‫في‬ ‫المهمة‬.
1.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_no).
‫في‬ ‫بياناته‬ ‫عرض‬ ‫يريد‬ ‫الذي‬ ‫الصديق‬ ‫برقم‬ ‫المستخدم‬ ‫يقوم‬ ‫أن‬ ‫ألجل‬ ‫وهذا‬
‫النصية‬ ‫الصناديق‬.
‫يضع‬ ‫فهنا‬ ‫الجدول‬ ‫في‬ ‫األصدقاء‬ ‫احد‬ ‫بيانات‬ ‫في‬ ‫بالتعديل‬ ‫يقوم‬ ‫أن‬ ‫أراد‬ ‫إن‬ ً‫ا‬‫وأيض‬
‫الصنا‬ ‫في‬ ‫الجديدة‬ ‫البيانات‬ ‫بكتابة‬ ‫ويقوم‬ ‫رقمه‬‫د‬‫يق‬.
2.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_show1. )
‫الزر‬ ‫هذا‬‫صديق‬ ‫بيانات‬ ‫لعرض‬‫قد‬ ‫يكون‬ ‫محدد‬‫في‬ ‫رقمه‬ ‫ادخل‬(txt_no).
3.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_del. )
‫في‬ ‫اسمه‬ ‫ادخل‬ ‫قد‬ ‫يكون‬ ‫محدد‬ ‫صديق‬ ‫بيانات‬ ‫لحذف‬ ‫الزر‬ ‫هذا‬(txt_no).
4.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_add. )
‫يقوم‬ ‫الزر‬ ‫هذا‬‫بإضافة‬‫الصناديق‬ ‫في‬ ‫المكتوبة‬ ‫البيانات‬ ‫من‬ ‫للجدول‬ ‫جديد‬ ‫صديق‬
‫الخمسة‬.
5.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_fri_no. )
‫الصديق‬ ‫رقم‬
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
01
6.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_fri_name. )
‫الصديق‬ ‫اسم‬
7.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_city. )
‫المدينة‬
8.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_mobile. )
‫الجوال‬ ‫رقم‬
9.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_job. )
‫الوظيفة‬
10.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_upd. )
‫في‬ ‫المكتوب‬ ‫الرقم‬ ‫صاحب‬ ‫الصديق‬ ‫بيانات‬ ‫بتعديل‬ ‫الزر‬ ‫هذا‬ ‫يقوم‬1‫مستخدما‬
‫الصناديق‬ ‫في‬ ‫المكتوبة‬ ‫البيانات‬ ‫بذالك‬.
‫نبدأ‬ ‫اآلن‬
‫ان‬ ‫يجب‬ ‫بيانات‬ ‫وقاعدة‬ ‫برنامج‬ ‫مابين‬ ‫بالربط‬ ‫لنقوم‬ ً‫ال‬‫او‬‫الخاص‬ ‫االسماء‬ ‫فضاء‬ ‫نضيف‬
‫في‬ ‫الكود‬ ‫نافذة‬ ‫في‬ ‫وتوجد‬ ‫المكاتب‬ ‫هو‬ ‫االسماء‬ ‫وفضاء‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫النوع‬ ‫بهذا‬
ً‫ا‬‫غالب‬ ‫منها‬ ‫نرى‬ ‫األعلى‬
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
System.Windows.Forms;using
‫بالبرنامج‬ ‫نستخدمها‬ ‫سوف‬ ‫التي‬ ‫البيانات‬ ‫بقاعدة‬ ‫الخاصة‬ ‫المكتبة‬ ‫نضيف‬ ‫وهنا‬
‫بتحديد‬ ‫نقوم‬‫التي‬ ‫المكتبة‬‫عليها‬ ‫نشتغل‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫نوع‬ ‫من‬.
‫الـ‬ ‫في‬SQLServer‫المكتبة‬ ‫نستخدم‬
using System.Data.SqlClient;
‫المكتبة‬ ‫نستخدم‬ ‫األكسس‬ ‫في‬
using System.Data.OleDb;
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
00
‫األكواد‬ ‫بكتابة‬ ‫سنبدأ‬ ‫اآلن‬
‫الكود‬ ‫نافذة‬ ‫إلى‬ ‫ندخل‬‫على‬ ‫بالضغط‬F7‫العام‬ ‫القسم‬ ‫إلى‬ ً‫ا‬‫وتحديد‬(public)
‫األكواد‬ ‫هذي‬ ‫وكتابة‬ ‫المتغيرات‬ ‫بتعريف‬ ‫نبدأ‬
public partial class Form1 : Form
{
1| OleDbConnection con = new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lesson7.accdb");
2| OleDbCommand cmd;
3| OleDbDataReader dr;
4| DataTable dt = new DataTable();
Form1()public
‫؟‬ ‫األكواد‬ ‫هذه‬ ‫هي‬ ‫ما‬
1.‫الكالس‬ ‫من‬ ‫كائن‬ ‫باشتقاق‬ ‫قمنا‬OleDbConnection‫وأسميناه‬con‫الكالس‬ ‫وهذا‬
‫به‬ ‫الخاصة‬ ‫الباراميترات‬ ‫ومن‬ ‫البيانات‬ ‫بقاعدة‬ ‫االتصال‬ ‫بتنفيذ‬ ‫يقوم‬ ‫الذي‬ ‫هو‬‫انه‬
‫أوال‬ ‫أعطيناه‬ ‫أننا‬ ‫نرى‬ ‫الكود‬ ‫رأينا‬ ‫فلو‬ ‫البيانات‬ ‫قاعدة‬ ‫ومسار‬ ‫المزود‬ ‫يستقبل‬
‫البيانات‬ ‫بقاعدة‬ ‫الخاص‬ ‫المزود‬Provider=Microsoft.ACE.OLEDB.12.0;‫ومن‬
‫اكسس‬ ‫بيانات‬ ‫قاعدة‬ ‫استخدمنا‬ ‫اننا‬ ‫الواضح‬2007.
‫واسمها‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫اعطيناه‬ ‫ثم‬Source=lesson7.accdbData‫لم‬ ‫هنا‬ ً‫ا‬‫وطبع‬
‫البرنامج‬ ‫مسار‬ ‫في‬ ‫وضعناها‬ ‫ألننا‬ ‫باسمها‬ ‫واكتفينا‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫لكتابة‬ ‫نحتاج‬
‫األساسي‬F:c#2014lesson7lesson7binDebug
2.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬Command‫األوامر‬ ‫وهي‬‫وأسميناه‬cmd‫نص‬ ‫سنحمله‬ ‫والذي‬
‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫نحتاجها‬ ‫التي‬ ‫األوامر‬.
3.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬DataReader‫واسميناه‬ ‫البيانات‬ ‫قارئ‬ ‫وهي‬dr‫لقراءة‬ ‫وهو‬
‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫البيانات‬.
4.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬DataTable‫نستطيع‬ ‫فئة‬ ‫وهي‬‫أن‬‫جدولية‬ ‫قيم‬ ‫نحملها‬‫وأسميناه‬
dt.
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
02
‫األدوات‬ ‫باقي‬ ‫في‬ ‫نبدأ‬ ‫اآلن‬
‫على‬ ‫بالضغط‬ ‫التصميم‬ ‫نافذة‬ ‫الى‬ ‫نعود‬SHIFT+F7
1.‫رقم‬ ‫الزر‬ ‫في‬2‫و‬‫الذي‬‫بتسميته‬ ‫قمنا‬(btn_show1. )‫التالي‬ ‫الكود‬ ‫نكتب‬
2. try
3. {
4. cmd = new OleDbCommand("select * from friends where
fri_no=" +txt_no.Text +" ", con);
5. con.Open();
6. dr = cmd.ExecuteReader();
7. dr.Read();
8. txt_fri_no.Text = dr["fri_no"].ToString();
9. txt_fri_name.Text = dr["fri_name"].ToString();
10. txt_city.Text = dr["city"].ToString();
11. txt_mobile.Text = dr["mobile"].ToString();
12. txt_job.Text = dr["job"].ToString();
13. dr.Close();
14.
15. MessageBox.Show("‫تم‬ ‫العرض‬ ");
16. }
17. catch (OleDbException xx)
18. {
19. MessageBox.Show("‫هناك‬ ‫خطأ‬ ‫ما‬ " + xx.Message);
20. }
21. finally
22. {
23. con.Close();
}
‫من‬ ‫األسطر‬ ‫هو‬ ‫الكود‬ ‫هذا‬ ‫في‬ ‫المهم‬4‫الى‬13‫دوال‬ ‫واستخدمنا‬try‫و‬catch‫لتفادي‬
‫الك‬ ‫نشرح‬ ‫تعالوا‬ ‫فقط‬ ‫اخطاء‬ ‫في‬ ‫الوقوع‬‫ود‬.
4/‫الكائن‬ ‫حملنا‬cmd‫فيه‬ ‫اشترطنا‬ ‫األمر‬ ‫ونص‬ ‫األتصال‬ ‫مفتاح‬ ‫و‬ ‫األمر‬ ‫نص‬
‫أن‬‫في‬ ‫المدخل‬ ‫النص‬ ‫يساوي‬ ‫الصديق‬ ‫رقم‬ ‫يكون‬(txt_no)
5/‫فتحنا‬‫االتصال‬‫دالة‬ ‫باستخدام‬Open();‫للكائن‬ ‫التابعة‬con.
6/‫بطلبها‬ ‫قام‬ ‫التي‬ ‫البيانات‬ ‫أسندنا‬cmd‫البيانات‬ ‫لقارئ‬dr
7/‫جعل‬dr‫البيانات‬ ‫يقرأ‬.
8/‫أدخلنا‬‫الخاصية‬ ‫في‬Text‫النصوص‬ ‫للصندوق‬(txt_fri_no)‫قمنا‬ ‫قيمة‬
‫من‬ ‫بأخذها‬dr‫هذا‬ ‫الى‬ ‫البيانات‬ ‫منه‬ ‫سنأخذ‬ ‫الذي‬ ‫الحقل‬ ‫بتحديد‬ ‫وقمنا‬
‫باألمر‬ ‫الصندوق‬].ToString();"fri_no"[‫حيث‬]"fri_no"[‫الحقل‬ ‫اسم‬ ‫هي‬
‫هذا‬ ‫النصوص‬ ‫صندوق‬ ‫في‬ ‫بعرضها‬ ‫سنقوم‬ ‫الجدول‬ ‫في‬‫نكتب‬ ‫ان‬ ‫ونستطيع‬
‫نكتب‬ ‫أن‬ ‫نستطيع‬ ‫هنا‬ ً‫ال‬‫مث‬ ‫الحقل‬ ‫رتبة‬0‫نكتب‬ ‫بأخطاء‬ ‫الوقوع‬ ‫لتفادي‬ ‫ولكن‬
‫الحقل‬ ‫اسم‬.
‫البيئة‬‫المتصلة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
03
9/‫م‬ ‫فعلنا‬ ‫وكما‬‫بقية‬ ‫مع‬ ‫نفعل‬ ‫الصديق‬ ‫برقم‬ ‫الخاص‬ ‫النص‬ ‫صندوق‬ ‫ع‬
‫سيعرضه‬ ‫الذي‬ ‫الحقل‬ ‫هو‬ ‫ما‬ ‫نصي‬ ‫صندوق‬ ‫كل‬ ‫محددين‬ ‫الصناديق‬.
13/‫نقوم‬‫بإغالق‬.‫االتصال‬
‫الزر‬ ‫الى‬ ‫ننتقل‬ ‫االن‬‫الثاني‬
‫رقم‬ ‫الزر‬ ‫في‬3‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_del. )
‫األكواد‬ ‫هذه‬ ‫بكتابة‬ ‫نقوم‬
cmd = new OleDbCommand("delete from friends where fri_no=" + txt_no.Text + "",
con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("‫تم‬ ‫حذف‬ ‫بيانات‬ ‫الصديق‬ ‫رقم‬ " + txt_no.Text);
‫األوا‬ ‫كائن‬ ‫بأعطاء‬ ‫قمنا‬ ‫األول‬ ‫السطر‬ ‫في‬‫الصديق‬ ‫بيانات‬ ‫بحذف‬ ‫الالزم‬ ‫األمر‬ ‫مر‬
‫ال‬ ‫في‬ ‫المحدد‬ ‫الرقم‬ ‫صاحب‬‫النص‬ ‫صندوق‬(txt_no)
‫األتصال‬ ‫مفتاح‬ ‫مع‬
‫يليه‬ ‫الذي‬ ‫بالسطر‬ ‫األتصال‬ ‫فتحنا‬ ‫ثم‬
ExecuteNonQuery(); ‫الدالة‬ ‫بإستخدام‬ ‫األمر‬ ‫بتنفيذ‬ ‫قمنا‬ ‫ثم‬
ExecuteReader(); ‫مثلها‬ ‫األمر‬ ‫لتنفيذ‬ ‫نستخدمها‬ ‫الدالة‬ ‫وهذه‬‫مثل‬
‫بينهما‬ ‫والفرق‬‫أن‬‫نستخدمها‬ ‫األولى‬‫إذا‬‫األمر‬ ‫من‬ ‫مرتجعة‬ ‫بيانات‬ ‫هناك‬ ‫كان‬‫أما‬
‫عمليات‬ ‫مثل‬ ‫مرتجعة‬ ‫بيانات‬ ‫هناك‬ ‫يكون‬ ‫ال‬ ‫عندما‬ ‫نستخدمها‬ ‫فنحن‬ ‫الثانية‬‫اإلضافة‬
‫والتعديل‬ ‫والحذف‬.
Try & Catch & Finally
‫جملة‬try‫بين‬ ‫الموجود‬ ‫الكود‬ ‫ينفذ‬ ‫أن‬ ‫يجرب‬ ‫أن‬ ‫المترجم‬ ‫إخبار‬ ‫وهي‬ ‫حاول‬ ‫أو‬ ‫جرب‬ ‫هي‬ ‫بالمعنى‬
‫استخدام‬ ‫بعد‬ ‫ويجب‬ ‫األخطاء‬ ‫لتفادي‬ ‫لها‬ ‫التابعة‬ ‫الحاصرتين‬try‫دالة‬ ‫استخدام‬ ‫يجب‬catch
‫أن‬ ‫والخالصة‬try‫بعد‬ ‫ثم‬ ‫تنفيذه‬ ‫تريد‬ ‫الذي‬ ‫الكود‬ ‫يكتب‬ ‫بينهما‬ ‫وما‬ ‫نهاية‬ ‫وحاصرة‬ ‫بداية‬ ‫حاصرة‬ ‫لها‬
‫قفل‬‫استخدام‬ ‫يجب‬ ‫الحاصرة‬catch‫كان‬ ‫إذا‬ ‫المترجم‬ ‫اليه‬ ‫ينتقل‬ ‫الذي‬ ‫الثاني‬ ‫الخيار‬ ‫بمقام‬ ‫تقوم‬ ‫وهي‬
‫داخل‬ ‫في‬ ‫الذي‬ ‫بالكود‬ ‫خطأ‬ ‫هناك‬try‫والـ‬catch‫المراد‬ ‫الكود‬ ‫داخلها‬ ‫في‬ ‫يكتب‬ ‫حاصرتين‬ ‫لها‬ ‫ايضا‬
‫جملة‬ ‫تنفيذ‬ ‫يتم‬ ‫لم‬ ‫إذا‬ ‫تنفيذ‬try‫ال‬ ‫حاصرة‬ ‫فتح‬ ‫قبل‬ ‫أيضا‬ ‫ونستطيع‬catch‫اشتقاق‬‫من‬ ‫كائن‬‫أي‬
‫الفئة‬ ‫من‬ ‫كائن‬ ‫باشتقاق‬ ‫قمنا‬ ‫المثال‬ ‫هذا‬ ‫وفي‬ ‫لنستخدمه‬ ‫كالس‬OleDbException‫بمقام‬ ‫وهو‬
‫األس‬ ‫بلغة‬ ‫االستثناء‬‫كي‬‫الكائن‬ ‫واسمينا‬ ‫إل‬ ‫و‬xx‫جملة‬ ‫في‬ ‫وجعلنا‬catch‫الذي‬ ‫بالخطأ‬ ‫تخبرنا‬ ‫رسالة‬
‫الكائن‬ ‫في‬ ‫دالة‬ ‫واستخدمنا‬ ‫وقع‬xx‫جم‬ ‫ان‬ ‫هنا‬ ‫عرفنا‬ . ‫الرسالة‬ ‫نص‬ ‫لنا‬ ‫لتعرض‬‫ال‬ ‫لة‬catch‫اذا‬ ‫تنفذ‬
‫الـ‬ ‫جملة‬ ‫تنفذ‬ ‫لم‬try‫الـ‬ ‫أما‬finally‫جمل‬ ‫تنفذت‬ ‫سواء‬ ‫الحالتين‬ ‫كلتا‬ ‫في‬ ‫جملها‬ ‫تنفذ‬ ‫دالة‬ ‫فهي‬try
‫جمل‬ ‫او‬catch.
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
04
‫قمنا‬ ‫يليه‬ ‫الذي‬ ‫السطر‬ ‫وفي‬‫بإظهار‬‫ويمك‬ ‫الحذف‬ ‫تم‬ ‫بأنه‬ ‫تفيد‬ ‫للمستخدم‬ ‫رسالة‬‫ننا‬
‫ب‬‫عده‬‫إغالق‬‫االتصال‬‫قمت‬ ‫ألني‬ ‫االتصال‬ ‫إغالق‬ ‫كود‬ ‫اكتب‬ ‫ولم‬‫ب‬‫دوال‬ ‫استخدام‬
‫األخطاء‬ ‫من‬ ‫التفادي‬. ‫فيها‬ ‫اإلغالق‬ ‫كود‬ ‫ووضعت‬
‫يلية‬ ‫الذي‬ ‫للزر‬ ‫ننتقل‬
‫وهو‬ ‫يليه‬ ‫الذي‬ ‫للزر‬ ‫ننتقل‬‫رقم‬ ‫الزر‬4‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_add)‫هذا‬ ‫به‬ ‫ونكتب‬
‫الكود‬
try
{
(1) cmd = new OleDbCommand("insert into friends
(fri_no,fri_name,city,mobile,job) values ('" + txt_fri_no.Text + "','" +
txt_fri_name.Text + "','" + txt_city.Text + "','" + txt_mobile.Text + "','" +
txt_job.Text + "')", con);
(2) con.Open();
(3) cmd.ExecuteNonQuery();
(4) MessageBox.Show("‫تمت‬ ‫االضافة‬ ");
}
catch (OleDbException xx)
{
MessageBox.Show(" ‫خطأ‬ " + xx.Message);
}
finally
{
con.Close();
}
‫للشرح‬ ‫اآلن‬
‫من‬ ‫األخضر‬ ‫باللون‬ ‫بترقيمها‬ ‫قمت‬ ‫الذي‬ ‫األسطر‬ ‫بشرح‬ ‫سأقوم‬1:4‫دوال‬ ‫اشرح‬ ‫ألن‬ ‫داعي‬ ‫فال‬
Try & Catch & Finally‫فأعتقد‬‫إنكم‬ً‫ا‬‫سابق‬ ‫عنها‬ ‫تحدثنا‬ ‫فقد‬ ‫تعرفونها‬
1.‫الكائن‬ ‫بإعطاء‬ ً‫ا‬‫سابق‬ ‫قمنا‬ ‫كما‬cmd‫الـ‬ ‫أمر‬sql‫مشروعنا‬ ‫في‬ ‫هو‬ ‫الذي‬ ‫االتصال‬ ‫مفتاح‬ ‫و‬
con‫بالـ‬ ‫الخاص‬ ‫اإلضافة‬ ‫أمر‬ ‫باستخدام‬ ‫قمنا‬ ‫السطر‬ ‫هذا‬ ‫في‬ ‫فعلنا‬ ‫وهكذا‬sql‫نأخذ‬ ‫ولكي‬
( ‫القيم‬values‫دمج‬ ‫في‬ ‫نستخدمها‬ ‫الذي‬ + ‫العالمة‬ ‫نستخدم‬ ‫النصية‬ ‫الصناديق‬ ‫داخل‬ ‫من‬ )
‫التركيز‬ ‫يجب‬ ‫ولكن‬ ‫بينها‬ ‫الربط‬ ‫او‬ ‫النصية‬ ‫السالسل‬‫والمزدوجة‬ ‫األحادية‬ ‫التنصيصات‬ ‫على‬
‫هو‬ ‫والذي‬ ‫االتصال‬ ‫كائن‬ ‫بتسمية‬ ‫قمنا‬ ‫األمر‬ ‫وبعد‬con.
2.‫االتصال‬ ‫فتحنا‬con.Open();.
3.‫الدالة‬ ‫باستخدام‬ ‫األمر‬ ‫بتنفيذ‬ ‫قمنا‬cmd.ExecuteNonQuery();.
4.. ‫اإلضافة‬ ‫تمت‬ ‫قد‬ ‫بأنه‬ ‫تفيد‬ ‫للمستخدم‬ ‫توضيحية‬ ‫رسالة‬ ‫بعرض‬ ‫قمنا‬
‫أنن‬ ‫الحظوا‬‫نكتب‬ ‫لم‬ ‫ا‬‫كود‬‫اال‬ ‫إغالق‬‫بكتابة‬ ‫قمنا‬ ‫ولكنا‬ ‫؟؟‬ ‫تصال‬‫دالة‬ ‫في‬finally‫في‬ ‫ستنفذ‬ ‫الذي‬
. ‫األحوال‬ ‫جميع‬
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
05
‫ننتقل‬ ‫اآلن‬‫إلى‬‫التالي‬ ‫الزر‬
‫رقم‬ ‫الزر‬ ‫وهو‬10‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_upd. )‫التعديل‬ ‫بحفظ‬ ‫يقوم‬ ‫والذي‬
‫الكود‬ ‫هذا‬ ‫فيه‬ ‫ونكتب‬
try
{
cmd = new OleDbCommand("update friends set fri_no=" +
txt_fri_no.Text + ", fri_name='" + txt_fri_name.Text + "',city='" +
txt_city.Text + "',mobile=" + txt_mobile.Text + ",job='" + txt_job.Text + "'
where fri_no=" + txt_no.Text + "", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("‫تم‬ ‫التعديل‬ ");
}
catch (OleDbException xx)
{
MessageBox.Show(" ‫خطأ‬ " + xx.Message);
}
finally
{
con.Close();
}
‫االضهافة‬ ‫لكهود‬ ‫كبيهرة‬ ‫بدرجهة‬ ‫مشهابة‬ ‫وههو‬ ‫مهره‬ ‫مهن‬ ‫اكثهر‬ ‫لهدينا‬ ‫تكهرر‬ ‫قهد‬ ‫انهه‬ ‫نرى‬ ‫الكود‬ ‫نرى‬ ‫عندما‬
‫هـ‬‫ه‬‫ال‬ ‫هود‬‫ه‬‫ك‬ ‫هو‬‫ه‬‫ه‬ ‫هد‬‫ه‬‫الوحي‬ ‫هتالف‬‫ه‬‫واالخ‬sql‫هم‬‫ه‬‫رق‬ ‫هق‬‫ه‬‫وف‬ ‫هناديق‬‫ه‬‫الص‬ ‫هن‬‫ه‬‫م‬ ‫هدة‬‫ه‬‫الجدي‬ ‫هيم‬‫ه‬‫الق‬ ‫هع‬‫ه‬‫بوض‬ ‫هوم‬‫ه‬‫يق‬ ‫هو‬‫ه‬‫وه‬
. ‫األول‬ ‫بالصندوق‬ ‫المكتوب‬ ‫الصديق‬
‫المتصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
06
‫ما‬‫؟؟؟‬ ‫المنفصلة‬ ‫والبيئة‬ ‫المتصلة‬ ‫البيئة‬ ‫هي‬
‫البيانات‬ ‫بقاعدة‬ ‫دائم‬ ‫اتصال‬ ‫على‬ ‫فيها‬ ‫نكون‬ ‫التي‬ ‫وهي‬ ‫المتصلة‬ ‫البيئة‬ ‫إطار‬ ‫في‬ ‫كان‬ ‫السابق‬ ‫الدرس‬
‫المنفصلة‬ ‫البيئة‬ ‫إما‬‫من‬ ‫نسخة‬ ‫تأخذ‬ ‫وإنما‬ ‫البيانات‬ ‫بقاعدة‬ ‫دائم‬ ‫اتصال‬ ‫على‬ ‫ليست‬ ‫أي‬ ‫ذلك‬ ‫عكس‬ ‫فهي‬
‫الحاجة‬ ‫تتم‬ ‫ان‬ ‫إلى‬ ‫بها‬ ‫وتشتغل‬ ‫البيانات‬ ‫قاعدة‬‫لالتصال‬
‫؟؟‬ ‫األداتين‬ ‫مايكروسوفت‬ ‫صممت‬ ‫ولماذا‬ ‫البيئتين‬ ‫من‬ ‫الفائدة‬ ‫ما‬
‫واستطعنا‬ ‫التقنية‬ ‫هذه‬ ‫أضافت‬ ‫عندما‬ ‫مايكروسوفت‬ ‫إن‬‫أن‬‫الوضع‬ ‫في‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫نتعامل‬
. ‫بيئتين‬ ‫هناك‬ ‫جعل‬ ‫من‬ ‫الفائدة‬ ‫وما‬ ‫لماذا‬ ‫لك‬ ‫سأشرح‬ ً‫ا‬‫جد‬ ‫كبيرة‬ ‫خدمة‬ ‫المنفصل‬
‫إننا‬‫ويستخدمها‬ ‫واحدة‬ ‫بيانات‬ ‫وقاعدة‬ ‫محلي‬ ‫سرفر‬ ‫مع‬ ‫نتعامل‬ ‫نكون‬ ‫عندما‬ ‫المتصلة‬ ‫البيئة‬ ‫نختار‬
‫المتصل‬ ‫الوضع‬ ‫يكون‬ ‫وهنا‬ ‫واحد‬ ‫مستخدم‬‫أفضل‬‫لالتصال‬‫لكن‬‫إن‬‫هنا‬ ‫كان‬‫ألكثر‬ ‫تتاح‬ ‫شبكات‬ ‫ك‬
‫على‬ ‫بها‬ ‫تقوم‬ ‫الذي‬ ‫التعديالت‬ ‫كل‬ ‫المنفصل‬ ‫الوضع‬ ‫في‬ ‫انه‬ ‫أي‬ ‫البيانات‬ ‫قاعدة‬ ‫نفس‬ ‫على‬ ‫مستخدم‬ ‫من‬
‫الوقت‬ ‫وعند‬ ‫البيانات‬ ‫قاعدة‬ ‫وليس‬ ‫برنامجك‬ ‫داخل‬ ‫مؤقت‬ ‫وهمي‬ ‫جدول‬ ‫على‬ ‫تحفظ‬ ‫البيانات‬ ‫قاعدة‬
‫حفظها‬ ‫يتم‬ ‫الالزم‬‫إلى‬‫البيانات‬ ‫قاعدة‬
‫البيئات‬ ‫اختالف‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
07
‫البيئة‬‫المنفصلة‬
‫سواء‬ ‫سنحتاجها‬ ‫الذي‬ ‫المفاهيم‬ ‫بعض‬ ‫إلى‬ ‫لنتعرف‬ ‫بسيطة‬ ‫بجولة‬ ‫سنقوم‬ ‫المنفصلة‬ ‫البيئة‬ ‫تطبيقات‬ ‫في‬ ‫ندخل‬ ‫ان‬ ‫قبل‬
‫الـ‬ ‫تقنية‬ ‫في‬ ‫تدخل‬ ‫التي‬ ‫المفاهيم‬ ‫بعض‬ ‫وسأذكر‬ ‫المنفصلة‬ ‫او‬ ‫المتصلة‬ ‫البيئة‬ ‫في‬ ‫نتعامل‬ ‫كنا‬ado.net.
-( ‫البيانات‬ ‫مجموعة‬Data set)
‫األنظمة‬ ‫من‬ ‫مجموعة‬ ‫هي‬. ‫بإدارتهها‬ ‫وتسهمح‬ ‫الهذاكرة‬ ‫فهي‬ ‫البيانهات‬ ‫فيها‬ ‫تخزن‬ ‫البرمجية‬‫أيضها‬
‫وربهط‬ ‫جهداول‬ ‫إنشهاء‬ ‫مهن‬ ‫تمكننها‬ ‫الهذاكرة‬ ‫فهي‬ ‫موجهودة‬ ‫صهغيرة‬ ‫بيانهات‬ ‫قاعدة‬ ‫عن‬ ‫عبارة‬ ‫هي‬
. ‫محدد‬ ‫بيانات‬ ‫مصدر‬ ‫على‬ ‫تعتمد‬ ‫ال‬ ‫وهي‬ ‫بعالقات‬ ‫الجداول‬ ‫هذه‬
‫الـ‬ ‫مكونات‬ ‫بعض‬ ‫ومن‬Data set
‫البيانات‬ ‫جدول‬ ‫الفئة‬Data Table:
‫في‬ ‫هيكله‬ ‫ببناء‬ ‫تقوم‬ ‫أن‬ ‫إما‬ ‫لجدول‬ ‫تمثيل‬ ‫عن‬ ‫عبارة‬Dataset‫بيانهات‬ ‫مصهدر‬ ‫من‬ ‫تأخذه‬ ‫أو‬‫ويمكهن‬
‫تحتوي‬ ‫أن‬Dataset. ‫الجداول‬ ‫من‬ ‫محدد‬ ‫غير‬ ‫عدد‬ ‫على‬
‫البيانات‬ ‫أعمدة‬ ‫الفئة‬Data Column:
.‫األعمدة‬ ‫مواصفات‬ ‫من‬ ... ‫الخ‬ ‫وطول‬ ‫واسم‬ ‫نوع‬ ‫له‬ ‫العمود‬ ‫هذا‬ ‫جدول‬ ‫داخل‬ ‫لعمود‬ ‫تمثيل‬ ‫عن‬ ‫عبارة‬
‫البيانات‬ ‫صفوف‬ ‫الفئة‬Data Row:
‫الفئة‬ ‫في‬ ‫سجل‬ ‫الفئة‬ ‫هذا‬ ‫يمثل‬Data Table‫طريقته‬ ‫تؤمن‬ ‫حيث‬Item. ‫حقوله‬ ‫قيم‬ ‫الى‬ ‫الوصول‬
‫األعمدة‬ ‫قيود‬ ‫الفئة‬Data Constariat:
‫مثل‬ ) ‫األعمدة‬ ‫داخل‬ ‫البيانات‬ ‫بهيئة‬ ‫تتحكم‬ ( ‫األعمدة‬ ‫على‬ ‫توضع‬ ‫قيود‬
(Primary , Foreign , NULL , Constariat , Unique)
‫عالقات‬ ‫الفئة‬DataRelations:
. ‫الجداول‬ ‫بين‬ ‫العالقات‬ ) ‫تحديد‬ ( ‫إنشاء‬ ‫خالله‬ ‫من‬ ‫نستطيع‬
‫مستعرضات‬ ‫الفئة‬Data View:
. ‫الكائن‬ ‫هذا‬ ‫خالل‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫جدول‬ ‫على‬ ‫يحتوي‬ ‫مستعرض‬ ‫إنشاء‬
: ‫بعد‬ ‫فيما‬ ‫أو‬ ‫هذا‬ ‫درسنا‬ ‫في‬ ‫سواء‬ ‫سنحتاجها‬ ‫الذي‬ ‫والكائنات‬ ‫الخصائص‬ ‫بعض‬ ‫هنا‬ ‫وسنذكر‬
‫الخاصية‬Position:
‫نوع‬ ‫من‬ ‫تعريفة‬ ‫تم‬ ‫الذي‬ ‫المتغير‬ ‫تتبع‬ ‫وهي‬ ‫السجالت‬ ‫بين‬ ‫للتنقل‬ ‫نستخدمها‬BindingManagerBase
.
‫الخاصية‬DataBinding:
. ‫فيه‬ ‫محتواه‬ ‫وعرض‬ ‫جدول‬ ‫في‬ ‫عمود‬ ‫مع‬ ‫كائن‬ ‫لربط‬ ‫الخاصية‬ ‫هذه‬ ‫تستخدم‬
‫الخاصية‬BindingContex:
‫هـ‬‫ه‬‫ال‬ ‫هع‬‫ه‬‫م‬ ‫هة‬‫ه‬‫المرتبط‬ ‫هات‬‫ه‬‫الكائن‬ ‫هربط‬‫ه‬‫ل‬ ‫هتخدم‬‫ه‬‫يس‬Dataset‫هق‬‫ه‬‫طري‬ ‫هن‬‫ه‬‫ع‬ ‫هدول‬‫ه‬‫الج‬ ‫هجالت‬‫ه‬‫بس‬ ‫هتحكم‬‫ه‬‫وال‬ ‫هدول‬‫ه‬‫والج‬
‫نوع‬ ‫من‬ ‫متغير‬ ‫استخدام‬BindingManagerBase.
BindingManagerBase:
‫هل‬‫ه‬‫داخ‬ ‫هة‬‫ه‬‫بالحرك‬ ‫هالتحكم‬‫ه‬‫ب‬ ‫هوم‬‫ه‬‫ويق‬ ‫هات‬‫ه‬‫البيان‬ ‫هة‬‫ه‬‫ومجموع‬ ‫هربط‬‫ه‬‫ال‬ ‫هات‬‫ه‬‫كائن‬ ‫هين‬‫ه‬‫ب‬ ‫هة‬‫ه‬‫العالق‬ ‫هيق‬‫ه‬‫بتنس‬ ‫هوم‬‫ه‬‫يق‬ ‫هائن‬‫ه‬‫ك‬ ‫هو‬‫ه‬‫وه‬
. ‫السجالت‬
CurrencyManager:
‫عمل‬ ‫بنفس‬ ‫يقوم‬ ‫كائن‬ ‫وهو‬BindingManagerBase.
‫الخاصية‬displayMember‫لـ‬ ‫التابعة‬ComboBox:
. ‫الجدول‬ ‫من‬ ‫بحقل‬ ‫البيانات‬ ‫قاعدة‬ ‫ربط‬ ‫في‬ ‫تستخدم‬
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
08
‫الخاصية‬ValueMember‫لـ‬ ‫التابعة‬ComboBox:
‫قيمة‬ ‫وهي‬DisplayMember. ‫البيانات‬ ‫قاعدة‬ ‫إلى‬ ‫إرجاعها‬ ‫يتم‬ ‫سوف‬ ‫التي‬
‫الخاصية‬DataSource‫لـ‬ ‫التابعة‬ComboBox:
. ‫البيانات‬ ‫قاعدة‬ ‫اسم‬ ‫بتحديد‬ ‫تقوم‬ ‫طريقة‬ ‫وهي‬
‫األمر‬ ‫باني‬ ‫كائن‬CommandBuilder:
‫الـ‬ ‫قبل‬ ‫من‬ ‫يستخدم‬ ‫كائن‬ ‫وهو‬DataAdepter‫قاعهدة‬ ‫فهي‬ ‫السهجالت‬ ‫وحهذف‬ ‫وتحهديث‬ ‫وإدخال‬ ‫الختيار‬
. ‫البيانات‬
‫الخاصية‬InsertCommand‫لـ‬ ‫التابعة‬DataAdapter:
‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬
‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫إلضافة‬Dataset.
‫الخاصية‬DeleteCommand‫لـ‬ ‫التابعة‬DataAdapter:
‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬
‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫لحذف‬Dataset.
‫الخاصية‬UpdateCommand‫لـ‬ ‫التابعة‬DataAdapter:
‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬
‫الـ‬DataAdapter‫البيانا‬ ‫لتعديل‬‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫ت‬Dataset.
‫الخاصية‬SelectCommand‫لـ‬ ‫التابعة‬DataAdapter:
‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬
‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫اختيار‬ ‫أو‬ ‫الستعالم‬Dataset.
‫الوظيف‬‫ة‬GetInsertCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder:
‫ههة‬‫ه‬‫للفئ‬ ‫ههية‬‫ه‬‫خاص‬ ‫ههن‬‫ه‬‫ع‬ ‫ههارة‬‫ه‬‫عب‬ ‫ههي‬‫ه‬‫وه‬CommandBuilder‫ههـ‬‫ه‬‫ال‬ ‫ههن‬‫ه‬‫م‬ ‫ههدة‬‫ه‬‫الجدي‬ ‫ههجالت‬‫ه‬‫الس‬ ‫ههافة‬‫ه‬‫بإض‬ ‫ههوم‬‫ه‬‫تق‬
Dataset‫الـ‬ ‫على‬ ‫وإسقاطها‬DataAdapter) ‫مرجع‬ ( ‫الخاصية‬ ‫طريقة‬ ‫عن‬InsertCommand
.
‫الوظيفة‬GetDeleteCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder:
‫ههة‬‫ه‬‫للفئ‬ ‫ههية‬‫ه‬‫خاص‬ ‫ههن‬‫ه‬‫ع‬ ‫ههارة‬‫ه‬‫عب‬ ‫ههي‬‫ه‬‫وه‬CommandBuilder‫ههة‬‫ه‬‫المحذوف‬ ‫ههجالت‬‫ه‬‫الس‬ ‫ههذف‬‫ه‬‫بح‬ ‫ههوم‬‫ه‬‫تق‬‫ههـ‬‫ه‬‫ال‬ ‫ههن‬‫ه‬‫م‬
Dataset‫ههههههههـ‬‫ه‬‫ال‬ ‫ههههههههى‬‫ه‬‫عل‬ ‫ههههههههقاطها‬‫ه‬‫وإس‬DataAdapter) ‫ههههههههع‬‫ه‬‫مرج‬ ( ‫ههههههههية‬‫ه‬‫الخاص‬ ‫ههههههههة‬‫ه‬‫طريق‬ ‫ههههههههن‬‫ه‬‫ع‬
DeleteCommand.
‫الوظيفة‬GetUpdateCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder:
‫للفئهة‬ ‫خاصهية‬ ‫عهن‬ ‫عبارة‬ ‫وهي‬CommandBuilder‫تعهديلها‬ ‫تهم‬ ‫التهي‬ ‫السهجالت‬ ‫بتعهديل‬ ‫تقهوم‬‫الهـ‬ ‫مهن‬
Dataset‫ههههههههـ‬‫ه‬‫ال‬ ‫ههههههههى‬‫ه‬‫عل‬ ‫ههههههههقاطها‬‫ه‬‫وإس‬DataAdapter) ‫ههههههههع‬‫ه‬‫مرج‬ ( ‫ههههههههية‬‫ه‬‫الخاص‬ ‫ههههههههة‬‫ه‬‫طريق‬ ‫ههههههههن‬‫ه‬‫ع‬
UpdateCommand.
‫هاس‬‫ه‬‫االلتب‬ ‫هيزيل‬‫ه‬‫س‬ ‫هالتطبيق‬‫ه‬‫فب‬ ‫هد‬‫ه‬‫جي‬ ‫هكل‬‫ه‬‫بش‬ ‫هابق‬‫ه‬‫الس‬ ‫هتوعبوا‬‫ه‬‫تس‬ ‫هم‬‫ه‬‫ل‬ ‫إن‬ ‫هى‬‫ه‬‫وحت‬ ‫هحة‬‫ه‬‫واض‬ ‫هور‬‫ه‬‫األم‬ ‫أن‬ ‫هد‬‫ه‬‫اعتق‬
‫وتص‬ ‫والغموض‬‫سهتوديو‬ ‫الفيجوال‬ ‫برنامج‬ ‫إلى‬ ‫أخرى‬ ‫مرة‬ ‫نعود‬ ‫للتطبيق‬ ‫بنا‬ ‫هيا‬ ‫أكثر‬ ‫جلية‬ ‫األمور‬ ‫بح‬
: ‫الواجهة‬ ‫هذه‬ ‫ونصمم‬ ‫جديد‬ ‫مشروع‬ ‫ننشئ‬
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
09
: ‫الواجهة‬ ‫شرح‬
. ‫السابق‬ ‫التطبيق‬ ‫في‬ ‫كما‬ ‫هي‬ ‫الشمال‬ ‫جهة‬ ‫على‬ ‫النصية‬ ‫الصناديق‬
‫أداة‬ ‫هي‬ ‫اليمين‬ ‫جهة‬ ‫في‬dataGridView‫وأسميناها‬ ‫البيانات‬ ‫لعرض‬ ‫أداة‬
dataGridView1‫بالرقم‬ ‫بالصورة‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬11.
‫األولى‬ ‫األزرار‬ ‫مجموعة‬
‫هي‬( ‫من‬ ‫المرقمة‬ ‫األدوات‬1-4( ‫أزرار‬ ‫هي‬ )button)‫بين‬ ‫التنقل‬ ‫بعمليات‬ ‫للقيام‬ ‫وهي‬
( ‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫بيانات‬groupBox)
‫و‬‫أسميناها‬groupBox1‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬12.
‫الثانية‬ ‫األزرار‬ ‫مجموعة‬
( ‫من‬ ‫المرقمة‬ ‫األدوات‬ ‫هي‬5-7( ‫أزرار‬ ‫هي‬ )button‫اإلضافة‬ ‫بعمليات‬ ‫للقيام‬ ‫وهي‬ )
‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫لبيانات‬ ‫والحذف‬ ‫والتعديل‬
(groupBox‫وأسميناها‬ )groupBox2‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬13.
‫الثالثة‬ ‫األزرار‬ ‫مجموعة‬
(‫أرقامها‬ ‫التي‬ ‫األداتين‬ ‫هي‬8‫و‬9(‫أزرار‬ ‫)هي‬button‫اإلضافة‬ ‫بتأكيدعمليات‬ ‫للقيام‬ ‫)وهي‬
‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫لبيانات‬ ‫والحذف‬ ‫والتعديل‬
(groupBox‫وأسميناها‬ )groupBox3‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬14.
( ‫رقم‬ ‫الزر‬10. ‫البرنامج‬ ‫بإغالق‬ ‫يقوم‬ ‫الذي‬ ‫الزر‬ ‫وهو‬ )
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
21
‫؟‬ ‫به‬ ‫نقوم‬ ‫ما‬ ‫أول‬ ‫ما‬ ‫س‬
‫به‬ ‫القيام‬ ‫علينا‬ ‫يجب‬ ‫ما‬ ‫أول‬ ‫أن‬ ‫شك‬ ‫ال‬‫التي‬ ‫المكتبة‬ ‫نحتاج‬ ‫وهنا‬ ‫نحتاجها‬ ‫التي‬ ‫المكتبة‬ ‫تعريف‬ ‫هو‬
‫وال‬ ‫أكسس‬ ‫البيانات‬ ‫قاعدة‬ ‫تخص‬‫ت‬‫هي‬ ‫ي‬
using System.Data.OleDb;
‫التالي‬ ‫ونكتب‬ ‫العام‬ ‫القسم‬ ‫في‬ ‫الكائنات‬ ‫واشتقاق‬ ‫المتغيرات‬ ‫تعريف‬ ‫ونبدأ‬
public partial class Form1 : Form
{
‫نقوم‬‫بتعريف‬‫جملة‬‫االتصال‬‫كما‬‫سبق‬‫ذكره‬‫ا‬‫ل‬‫قب‬//
OleDbConnection con = new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=lesson7.accdb");
‫تعريف‬‫كائن‬‫من‬‫فئة‬‫منظم‬‫البيانات‬//
OleDbDataAdapter da;
‫تعريف‬‫كائن‬‫من‬‫فئة‬‫جدول‬‫البيانات‬//
DataTable dt = new DataTable();
‫تعريف‬‫كائن‬‫من‬‫فئة‬‫العلقات‬//
BindingManagerBase bmb;
‫تعريف‬‫كائن‬‫من‬‫فئة‬‫باني‬‫األوامر‬//
OleDbCommandBuilder cmdb;
public Form1()
{
InitializeComponent();
}
( ‫الحاويات‬ ‫داخل‬ ‫األدوات‬ ‫بعض‬ ‫وضعنا‬ ‫لماذا‬ ً‫ال‬‫سؤا‬ ‫سأسألكم‬groupBox‫؟؟‬ )
‫األزرار‬ ‫فإن‬ ‫البرنامج‬ ‫اشتغال‬ ‫عند‬ ‫نريد‬ ‫أننا‬ ‫هو‬ ‫ألجله‬ ‫وضعناها‬ ‫الذي‬ ‫الغرض‬ ‫ولكن‬ ‫يمكن‬ ‫أجل‬ ! ‫صحيح‬ ‫للتنظيم‬
( ‫رقم‬8‫و‬9‫العمليات‬ ‫بتأكيد‬ ‫يقومان‬ ‫الذي‬ )‫ان‬ ‫نريد‬ ‫ال‬‫إحدى‬ ‫المستخدم‬ ‫اختيار‬ ‫عند‬ ‫اال‬ ‫المستخدم‬ ‫على‬ ‫يظهرا‬
‫(اإلضافة‬ ‫العمليات‬–‫التعديل‬–‫الوضع‬ ‫يعود‬ ‫الزرين‬ ‫أحد‬ ‫على‬ ‫الضغط‬ ‫وعند‬ ‫األدوات‬ ‫بقية‬ ‫وتختفي‬ ) ‫الحذف‬
‫الخاصية‬ ‫سنجعل‬ ‫ولهذا‬ ‫السابقة‬ ‫للحالة‬Enabled‫لألداة‬groupBox3=False‫داخل‬ ‫الدالة‬ ‫هذه‬ ‫ونكتب‬
: ‫الحاجة‬ ‫عند‬ ‫سنستخدمها‬ ‫والتي‬ ‫البرنامج‬
void toolsShow()
{
groupBox1.Enabled = !groupBox1.Enabled;
groupBox2.Enabled = !groupBox2.Enabled;
groupBox3.Enabled = !groupBox3.Enabled;
}
‫وه‬. ‫عليه‬ ‫هي‬ ‫ما‬ ‫على‬ ‫الحاويات‬ ‫تشغيل‬ ‫حالة‬ ‫بقلب‬ ‫تقوم‬ ‫استدعاءها‬ ‫عند‬ ‫الدالة‬ ‫ذه‬
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
20
‫على‬ ‫بالضغط‬ ‫الواجهة‬ ‫تصميم‬ ‫واجهة‬ ‫إلى‬ ‫نعود‬SHIFT+F7‫نكتب‬ ‫اللود‬ ‫حدث‬ ‫في‬ ‫مرتين‬ ‫الفورم‬ ‫على‬ ‫ونضغط‬
: ‫التالي‬ ‫الكود‬
private void Form1_Load(object sender, EventArgs e)
{
‫إعطاء‬‫كائن‬‫منظم‬‫البيانات‬‫جملة‬‫اإلس‬‫كيو‬‫إل‬‫ا‬‫ا‬‫وإيض‬‫مفتاح‬‫اإلتصال‬//
da = new OleDbDataAdapter("select * from friends", con);
‫استخدام‬‫الدالة‬‫فيل‬‫من‬‫دوال‬‫كائن‬‫منظم‬‫البيانات‬‫لتعبئة‬‫متغير‬‫جدول‬‫البيانات‬//
‫أي‬‫أنه‬‫بعد‬‫تنفيذ‬‫الكود‬‫السابق‬‫يكون‬‫منظم‬‫البيانات‬‫كأنه‬‫يحمل‬//
‫البيانات‬‫الراجعة‬‫من‬‫قاعدة‬‫البيانات‬‫ونطلب‬‫منها‬‫هنا‬‫تعبئتها‬‫للجدول‬‫ويمكننا‬‫فعل‬‫التالي‬‫باألمر‬//
//dt.load(da);
‫أي‬‫أننا‬‫نجعل‬‫كائن‬‫جدول‬‫البيانات‬‫يقوم‬‫بتحميل‬‫البيانات‬‫من‬‫منظم‬‫البيانات‬//
da.Fill(dt);
‫وهنا‬‫نقوم‬‫بربط‬‫خاصية‬‫من‬‫خواص‬‫األداة‬‫بحقل‬‫معين‬‫من‬‫حقول‬‫الجدول‬//
‫بإستخدام‬‫خاصية‬DataBindings‫وتستقبل‬‫القيم‬ ‫بعض‬‫كباراميترات‬//
‫الباراميتر‬‫األول‬‫خاصية‬‫األداة‬‫التي‬‫سنضيف‬‫اليها‬‫بيانات‬‫الحق‬‫وهنا‬‫استخدمنا‬text//
‫والثاني‬‫اسم‬‫الجدول‬‫او‬‫مصدر‬‫البيانات‬‫والذي‬‫هو‬‫عندنا‬dt//
‫والثالث‬‫هو‬‫اسم‬‫العمود‬‫في‬‫الجدول‬‫المحدد‬‫والذي‬‫هو‬‫عندنا‬fri_no//
‫وهذا‬‫يعني‬‫أننا‬‫قمنا‬‫بربط‬‫خاصية‬‫النص‬‫لصندوق‬‫النص‬‫هذا‬‫بالحقل‬‫المحدد‬‫في‬‫العمود‬‫رقم‬‫الصديق‬‫بالجدول‬
dt//
txtfri_no.DataBindings.Add("text", dt, "fri_no");
‫كما‬‫سبق‬‫إال‬‫اننا‬‫هنا‬‫ربطناه‬‫بإسم‬‫الصديق‬//
txtfri_name.DataBindings.Add("text", dt, "fri_name");
‫وهذا‬‫ربطناه‬‫بالمدينة‬//
txtcity.DataBindings.Add("text", dt, "city");
‫وهذا‬‫برقم‬‫الجوال‬//
txtmobile.DataBindings.Add("text", dt, "mobile");
‫وهذا‬‫بالوظيفة‬//
txtjob.DataBindings.Add("text", dt, "job");
‫قمنا‬‫بالربط‬‫بين‬‫الـ‬bmb‫و‬‫الـ‬dt//
‫او‬‫نستطيع‬‫القول‬‫اننا‬‫حددنا‬‫للـ‬bmb‫الكائن‬‫الذي‬‫عليها‬‫التعامل‬‫معه‬//
bmb = this.BindingContext[dt];
‫قمنا‬‫بتعبئة‬‫أداة‬‫عرض‬‫البيانات‬‫ببيانات‬‫الجدول‬dt//
dataGridView1.DataSource = dt;
}
!!! ‫الجدول‬ ‫بيانات‬ ‫لنا‬ ‫عرض‬ ‫قد‬ ‫انه‬ ‫لترى‬ ‫البرنامج‬ ‫تشغيل‬ ‫تجرب‬ ‫ان‬ ‫يمكنك‬
‫األول‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫األول‬ ‫الزر‬ ‫على‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نرجع‬ ‫اآلن‬ ‫و‬
‫الكود‬ ‫هذا‬ ‫فيه‬ ‫ونكتب‬
private void btnfrist_Click(object sender, EventArgs e)
{
‫جعلنا‬‫موقع‬‫الـ‬= bmb0‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫يحتل‬‫الرتبة‬‫صفر‬//
bmb.Position = 0;
}
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
22
‫التالي‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الثاني‬ ‫الزر‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫واجهة‬ ‫إلى‬ ‫ونرجع‬
‫الكود‬ ‫هذا‬ ‫ونكتب‬
private void next_Click(object sender, EventArgs e)
{
‫زدنا‬‫موقع‬‫الـ‬bmb‫بنسبة‬1‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫ا‬‫ا‬‫حالي‬ ‫المعروض‬ ‫الصديق‬ ‫يلي‬//
bmb.Position++;
}
‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الثالث‬ ‫الزر‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫واجهة‬ ‫إلى‬ ‫ونرجع‬‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫السابق‬ ‫الصديق‬
private void btnprevious_Click(object sender, EventArgs e)
{
‫انقصنا‬‫موقع‬‫الـ‬bmb‫بنسبة‬1‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫ا‬‫ا‬‫حالي‬ ‫المعروض‬ ‫الصديق‬ ‫يسبق‬//
bmb.Position--;
}
‫إلى‬ ‫نرجع‬‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫األخير‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الرابع‬ ‫الزر‬ ‫على‬ ‫نضغط‬ ‫التصميم‬ ‫واجهة‬
private void btnlast_Click(object sender, EventArgs e)
{
‫جعلنا‬‫موقع‬‫الـ‬bmb=‫بمقدار‬ ‫الجدول‬ ‫صفوف‬ ‫عدد‬ ‫من‬ ‫اقل‬‫ا‬‫ا‬//
bmb.Position = dt.Columns.Count - 1;
}
‫رقم‬ ‫الزر‬ ‫وفي‬5‫التالي‬ ‫الكود‬ ‫بكتابة‬ ‫نقوم‬ ‫اإلضافة‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬
private void btnAdd_Click(object sender, EventArgs e)
{
‫قمنا‬‫بإخبار‬‫المعالج‬‫اننا‬‫نريد‬‫اضافة‬‫بيانات‬‫جديدة‬//
bmb.AddNew();
‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬//
toolsShow();
}
‫رقم‬ ‫الزر‬ ‫وفي‬6‫األزرار‬ ‫تشغيل‬ ‫حالة‬ ‫تغيير‬ ‫دالة‬ ‫استدعاء‬ ‫كود‬ ‫إال‬ ‫نكتب‬ ‫ال‬ ‫التعديل‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬
‫رقم‬ ‫الزر‬ ‫وفي‬7‫ا‬ ‫الكود‬ ‫نكتب‬ ‫الحذف‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬: ‫لتالي‬
private void btnDel_Click(object sender, EventArgs e)
{
‫وهذا‬‫السطر‬‫يقوم‬‫بعرض‬‫رسالة‬‫للمستخدم‬‫تقول‬‫له‬‫هل‬‫انت‬‫متأكد‬‫من‬‫عملية‬‫الحذف‬//
‫فإن‬‫اختار‬‫نعم‬‫تحقق‬‫شرط‬‫وتم‬‫تنفيذ‬‫ماداخل‬‫الحاصرتين‬‫او‬‫باألصح‬‫تم‬‫تنفيذ‬‫جملة‬// If
‫وان‬‫اختار‬‫ال‬‫تم‬‫الخروج‬‫من‬‫الجملة‬‫وعدم‬‫حدوث‬‫اي‬‫تغيير‬//
if (MessageBox.Show("‫هل‬ ‫انت‬ ‫متأكد‬ ‫من‬ ‫عملية‬ ‫الحذف‬ ", "‫تأكيد‬ ‫الحذف‬ ",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
‫إعطاء‬‫أمر‬‫الحذف‬‫بالدالة‬Removeat‫والتي‬‫تقوم‬‫بالحذف‬‫حسب‬‫الموقع‬‫وتستقبل‬‫الموقع‬‫كباراميتر‬//
bmb.RemoveAt(bmb.Position);
‫نعطيه‬‫األمر‬‫بإنهاء‬‫العملية‬‫الحالية‬//
bmb.EndCurrentEdit();
‫حددنا‬‫لباني‬‫األوامر‬‫منظم‬‫البيانات‬‫الذي‬‫عليه‬‫التعامل‬‫معه‬//
cmdb = new OleDbCommandBuilder(da);
‫منظم‬‫البيانات‬‫يقوم‬‫بتحديث‬‫البيانات‬‫الذي‬‫في‬‫الـ‬// dt
da.Update(dt);
}
}
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
23
‫رقم‬ ‫للزر‬ ‫ننتقل‬8‫الكود‬ ‫هذا‬ ‫ونكتب‬ ‫العملية‬ ‫تأكيد‬ ‫أو‬ ‫بحفظ‬ ‫يقوم‬ ‫والذي‬
private void btnSave_Click(object sender, EventArgs e)
{
‫نعطيه‬‫األمر‬‫بإنهاء‬‫العملية‬‫الحالية‬//
bmb.EndCurrentEdit();
‫حددنا‬‫لباني‬‫األوامر‬‫منظم‬‫البيانات‬‫الذي‬‫عليه‬‫التعامل‬‫معه‬//
cmdb = new OleDbCommandBuilder(da);
‫منظم‬‫البيانات‬‫يقوم‬‫بتحديث‬‫البيانات‬‫الذي‬‫في‬‫الـ‬// dt
da.Update(dt);
‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬//
toolsShow();
}
‫رقم‬ ‫للزر‬ ‫ننتقل‬9‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫العملية‬ ‫بإلغاء‬ ‫يقوم‬ ‫والذي‬
private void btnCancel_Click(object sender, EventArgs e)
{
‫نعطيه‬‫األمر‬‫بإلغاء‬‫العملية‬‫بإستخدام‬‫الدالة‬// CancelCurrentEdit();
bmb.CancelCurrentEdit();
‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬//
toolsShow();
}
‫تعرفون‬ ‫كما‬ ‫فقط‬ ‫البرنامج‬ ‫إغالق‬ ‫أمر‬ ‫فهو‬ ‫اإلغالق‬ ‫زر‬ ‫في‬ ‫أما‬
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
‫المنفصلة‬ ‫البيئة‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
24
‫الوضع‬ ‫في‬ ‫برنامجك‬ ‫في‬ ‫األدوات‬ ‫وخواص‬ ‫البيانات‬ ‫قاعدة‬ ‫بيانات‬ ‫مابين‬ ‫الربط‬ ‫يوضح‬ ‫هو‬ ‫السابق‬ ‫المثال‬
‫ادابتر‬ ‫الداتا‬ ‫نستخدم‬ ‫المنفصلة‬ ‫البيئة‬ ‫في‬ ‫أننا‬ ً‫ا‬‫جلي‬ ‫األمر‬ ‫أن‬ ‫اعتقد‬ ‫متصل‬ ‫الغير‬‫غير‬ ‫يجعلنا‬ ‫الذي‬ ‫وهو‬
‫ال‬ ‫لم‬ ‫تساءل‬ ‫قد‬ ‫منكم‬ ‫العديد‬ ‫أن‬ ‫فيبدو‬ ً‫ا‬‫ضروري‬ ً‫ال‬‫مثا‬ ‫لكم‬ ‫أضيف‬ ‫أن‬ ‫أريد‬ ‫المهم‬ . ‫البيانات‬ ‫بقاعدة‬ ‫متصلين‬
‫قائمة‬ ‫في‬ ‫بياناته‬ ‫عرض‬ ‫المراد‬ ‫للصديق‬ ‫المستخدم‬ ‫اختيار‬ ‫طريقة‬ ‫نجعل‬‫بوكس‬ ‫الكومبو‬ ‫أو‬ ‫بوكس‬ ‫الليست‬
‫م‬ ‫هي‬ ‫ذلك‬ ‫لتعلم‬ ‫الملحة‬ ‫الحاجة‬ ‫بل‬ ‫التساؤل‬ ‫ولهذا‬‫بلمحة‬ ‫الموضوع‬ ‫هذا‬ ‫على‬ ‫بكم‬ ‫أمر‬ ‫أن‬ ‫أصر‬ ‫جعلتني‬ ‫ا‬
‫بنا‬ ‫هيا‬ ‫عليكم‬ ‫أطيل‬ ‫ال‬ ‫بأنفسكم‬ ‫تطوروها‬ ‫وبعدئذ‬ ‫أساسها‬ ‫وتفهموا‬ ‫الموضوع‬ ‫هذا‬ ‫عن‬ ‫فكرة‬ ‫لتأخذوا‬ ‫بسيطة‬
. ‫المثال‬ ‫إلى‬
‫نريد‬‫إن‬‫نصمم‬‫برنامج‬‫فيه‬‫كومبو‬‫بوكس‬‫يعرض‬‫لنا‬‫أسماء‬‫األصدقاء‬‫وعند‬‫اختيارنا‬‫ألحد‬‫األصدقاء‬
‫يعرض‬‫بياناته‬‫في‬‫صناديق‬‫نصية‬.
‫ستوديو‬ ‫الفيجوال‬ ‫برنامج‬ ‫في‬ ‫الواجهة‬ ‫هذه‬ ‫نصمم‬
‫الخاصية‬ ‫وفي‬ ‫بوكس‬ ‫الكومبو‬ ‫الى‬ ‫نذهب‬DropDownStyle‫نجعلها‬DropDownList‫وذلك‬
. ‫عليها‬ ‫المعروضة‬ ‫البيانات‬ ‫على‬ ‫التعديل‬ ‫لمنع‬ ‫باألصح‬ ‫أو‬ ‫فقط‬ ‫للقراءة‬ ‫لجعلها‬
‫فضاء‬ ‫كتابة‬ ‫وبعد‬ ‫الكود‬ ‫نافذة‬ ‫إلى‬ ‫ندخل‬ ‫ثم‬‫المتغيرات‬ ‫تعريف‬ ‫إلى‬ ‫ننزل‬ ‫البيانات‬ ‫بقاعدة‬ ‫الخاص‬ ‫األسماء‬
: ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫العام‬ ‫الجزء‬ ‫في‬ ‫الكائنات‬ ‫واشتقاق‬
‫نقوم‬‫بتعريف‬‫جملة‬‫االتصال‬‫كما‬‫سبق‬‫ذكره‬‫ا‬‫ل‬‫قب‬//
OleDbConnection con = new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lesson7.accdb");
‫كائن‬ ‫إشتقاق‬‫فئة‬‫منظم‬‫أو‬‫جالب‬‫البيانات‬//
OleDbDataAdapter da;
‫تعريف‬‫كائن‬‫من‬‫فئة‬‫جدول‬‫البيانات‬‫ليستقبل‬‫البيانات‬‫الراجعة‬//
‫وهذا‬‫الذي‬‫سنستخدمه‬‫في‬‫تعبئة‬‫الكومبو‬‫بوكس‬//
DataTable dt = new DataTable();
‫اشتقاق‬‫كائن‬‫آخر‬‫من‬‫فئة‬‫جدول‬‫البيانات‬‫ليستقبل‬‫البيانات‬‫الراجعة‬//
‫وهذا‬‫الذي‬‫سنستخدمة‬‫في‬‫تعبئة‬‫الصناديق‬‫النصية‬//
‫ألن‬‫هذا‬‫الجدول‬‫سيحمل‬‫بيانات‬‫سطر‬‫واحد‬‫أما‬‫السابق‬‫فهو‬‫يحمل‬‫بيانات‬‫عمود‬//
DataTable dt2 = new DataTable();
public Form1()
{
InitializeComponent();
}
‫المنفصلة‬ ‫في‬ ‫مقتطفات‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
25
‫اللود‬ ‫حدث‬ ‫إلى‬ ‫لننتقل‬ ‫مرتين‬ ‫الفورم‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نعود‬ ‫اآلن‬ ً‫ا‬‫واضح‬ ‫الشرح‬ ‫أن‬ ‫أظن‬
: ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫الفورم‬ ‫تحميل‬ ‫حدث‬ ‫أي‬
private void Form1_Load(object sender, EventArgs e)
{
‫إعطاء‬‫كائن‬‫منظم‬‫البيانات‬‫أو‬‫جالبها‬‫جملة‬‫اإلس‬‫كيو‬‫إل‬‫ا‬‫ا‬‫وإيض‬‫مفتاح‬‫اإلتصال‬//
da = new OleDbDataAdapter("select * from friends", con);
/*
‫استخدام‬‫الدالة‬‫فيل‬‫من‬‫دوال‬‫كائن‬‫منظم‬‫البيانات‬‫لتعبئة‬‫متغير‬‫جدول‬‫البيانات‬
‫أي‬‫أنه‬‫بعد‬‫تنفيذ‬‫الكود‬‫السابق‬‫يكون‬‫منظم‬‫البيانات‬‫كأنه‬‫يحمل‬
‫البيانات‬‫الراجعة‬‫من‬‫قاعدة‬‫البيانات‬‫ونطلب‬‫منها‬‫هنا‬‫تعبئتها‬‫للجدول‬‫ويمكننا‬‫فعل‬‫التالي‬‫باألمر‬
dt.load(da);
‫أي‬‫أننا‬‫نجعل‬‫كائن‬‫جدول‬‫البيانات‬‫يقوم‬‫بتحميل‬‫البيانات‬‫من‬‫جالب‬‫البيانات‬
*/
da.Fill(dt);
‫ثم‬‫نحدد‬‫مصدر‬‫بيانات‬‫الكومبو‬‫بوكس‬‫أنها‬‫من‬‫الجدول‬//
comboBox1.DataSource = dt;
‫نحدد‬‫الحقل‬‫الذي‬‫نريد‬‫إظهاره‬‫في‬‫الكومبو‬‫بوكس‬//
‫وهنا‬‫حددنا‬‫الحقل‬‫رقم‬‫الصديق‬‫بأستخدام‬‫خاصية‬DisplayMember‫للكومبو‬‫بوكس‬//
comboBox1.DisplayMember = "fri_name";
‫نكتب‬‫اسم‬‫الحقل‬‫صاحب‬‫المفتاح‬‫الرئيسي‬‫في‬‫جدول‬‫األصدقاء‬‫في‬‫الخاصية‬ValueMember‫للكومبو‬‫بوكس‬
//
comboBox1.ValueMember = "fri_no";
}
.‫وسترى‬ ‫التنفيذ‬ ‫جرب‬ ! ‫األصدقاء‬ ‫لجميع‬ ‫الصديق‬ ‫اسم‬ ‫العمود‬ ‫ببيانات‬ ‫بوكس‬ ‫الكومبو‬ ‫حملنا‬ ‫قد‬ ‫نحن‬ ‫اآلن‬
‫الى‬ ‫لندخل‬ ‫نقرتين‬ ‫بوكس‬ ‫الكومبو‬ ‫على‬ ‫وننقر‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نعود‬‫حدث‬SelectedIndexChanged
: ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫لها‬
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
dt2.Clear();
da = new OleDbDataAdapter("select * from friends where fri_name='"
+comboBox1.Text + "'", con);
‫الشك‬‫اننا‬‫نعرف‬‫ان‬‫اإلستعلم‬‫السابق‬‫يرجع‬‫لنا‬‫سطر‬‫من‬‫البيانات‬//
‫وهنا‬‫قمنا‬‫بتعبئة‬‫الـ‬dt2‫ببيانات‬‫هذا‬‫السطر‬//
da.Fill(dt2);
/*
‫اآلن‬‫نأتي‬‫ألظهار‬‫بيانات‬‫السطر‬‫الذي‬‫في‬‫الجدول‬‫في‬‫الصناديق‬‫النصية‬
‫نحدد‬‫الجدول‬‫ثم‬‫نستخدم‬‫دالة‬Rows‫وهي‬‫دالة‬‫تحدد‬‫الصف‬‫وتستقبل‬‫رتبة‬‫السطر‬
‫ورتبة‬‫السطر‬‫عندنا‬‫هو‬‫الصفر‬‫إلن‬‫اإلستعلم‬‫السابق‬‫يجلب‬‫سطر‬‫واحد‬‫فقط‬
‫وتستقبل‬‫ا‬‫ا‬‫إيض‬‫رتبة‬‫الحقل‬‫ورتبة‬‫الحقل‬‫في‬‫رقم‬‫الصديق‬‫هي‬1
‫ولكن‬‫لتفادي‬‫األخطاء‬‫نكتب‬‫اسم‬‫الحقل‬‫أفضل‬‫من‬‫رتبته‬
‫وعلى‬‫نفس‬‫الطريقة‬‫نكمل‬‫باقي‬‫الصناديق‬‫النصية‬
*/
txt_fri_no.Text = dt2.Rows[0]["fri_no"].ToString();
txt_fri_name.Text = dt2.Rows[0]["fri_name"].ToString();
txt_city.Text = dt2.Rows[0]["city"].ToString();
txt_mobile.Text = dt2.Rows[0]["mobile"].ToString();
txt_job.Text = dt2.Rows[0]["job"].ToString();
}
catch
{
return;
}
}
‫المنفصلة‬ ‫في‬ ‫مقتطفات‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
26
‫باستخدام‬ ‫المتصل‬ ‫بالبيئة‬ ‫منها‬ ‫طرق‬ ‫بعدة‬ ‫بوكس‬ ‫الليست‬ ‫او‬ ‫بوكس‬ ‫للكومبو‬ ‫بيانات‬ ‫إضافة‬ ً‫ا‬‫أيض‬ ‫ونستطيع‬
‫الطريقة‬ ‫بهذه‬ ‫ريدر‬ ‫الداتا‬
private void button1_Click_1(object sender, EventArgs e)
{
try
{
cmd = new OleDbCommand("select * from friends", con);
con.Open();
dr = cmd.ExecuteReader();
comboBox1.DisplayMember = "fri_name";
comboBox1.ValueMember = "fri_no";
while (dr.Read())
{
comboBox1.Items.Add(dr["fri_name"].ToString());
}
dr.Close();
MessageBox.Show("‫تم‬ ‫االضافة‬ ");
}
catch (OleDbException xx)
{
MessageBox.Show("‫هناك‬ ‫خطأ‬ ‫ما‬ " + xx.Message);
}
finally
{
con.Close();
}
}
‫المتصلة‬ ‫في‬ ‫مقتطفات‬
‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net
alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035
hamzaweynet@gmail.com@
27
‫يحوي‬ ‫ولكنه‬ ‫فقط‬ ‫مقدمة‬ ‫هو‬ ‫الكتاب‬ ‫هذا‬ ‫البداية‬ ‫في‬ ‫لكم‬ ‫قلت‬ ‫قد‬ ‫ولكني‬ ‫األشياء‬ ‫بعض‬ ‫في‬ ‫قصرت‬ ‫إذا‬ ‫أعتذر‬
‫اإليميالت‬ ‫احد‬ ‫على‬ ‫مراسلتي‬ ‫يرجى‬ ‫استفسار‬ ‫ألي‬ ‫تحياتي‬ ‫خالص‬ ‫وتقبلوا‬ ‫التقنية‬ ‫هذه‬ ‫في‬ ‫األشياء‬ ‫أهم‬
. ‫القادمة‬ ‫الكتب‬ ‫في‬ ‫وانتظرونا‬
X
‫البعسي‬ ‫علي‬ ‫حمزه‬
‫اليمن‬ - ‫حاسوب‬ ‫برمجة‬
‫لم‬ ‫وان‬ ‫البرنامج‬ ‫مجلد‬ ‫داخل‬ ‫البيانات‬ ‫قاعدة‬ ‫نضع‬ ‫كنا‬ ‫كلها‬ ‫السابقة‬ ‫الدروس‬ ‫في‬ ‫أننا‬ ‫أنبهكم‬ ‫أن‬ ‫يجب‬
‫طيلة‬ ‫نفعل‬ ‫كنا‬ ‫كما‬ ‫البرنامج‬ ‫مسار‬ ‫في‬ ‫ولوضعها‬ ‫البيانات‬ ‫قاعدة‬ ‫موقع‬ ‫كتابة‬ ‫علينا‬ ‫يجب‬ ‫هناك‬ ‫تكن‬
( ‫البرنامج‬ ‫مجلد‬ ‫نفتح‬ ‫السابقة‬ ‫الدروس‬bin( ‫مجلد‬ ‫ندخل‬ ‫داخلة‬ ‫ومن‬ )Debug‫لكي‬ ‫هنا‬ ‫ونضعها‬ )
. ‫البرنامج‬ ‫مسار‬ ‫في‬ ‫تكون‬
‫الفيجوال‬ ‫واجهة‬ ‫من‬ ‫تستطيعون‬ ‫انتم‬ ‫تكتبوها‬ ‫ال‬ ‫أن‬ ‫تريدون‬ ‫وإن‬( ‫تبويب‬ ‫على‬ ‫الضغط‬Data)
( ‫واختيار‬Add New Data Source( ‫زر‬ ‫على‬ ‫الضغط‬ ‫ثم‬ )Next( ‫نضغط‬ ‫ثم‬ )New
Connection( ‫زر‬ ‫من‬ ‫ثم‬ )Browser‫استخدامها‬ ‫نريد‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫مكان‬ ‫نحدد‬ ‫ثم‬ )
( ‫ونضغط‬Open( ‫عليه‬ ‫مكتوب‬ ‫زر‬ ‫النافذة‬ ‫في‬ ‫لديك‬ )Test Connection‫نجاح‬ ‫الختبار‬ )
‫ال‬ ‫ثم‬ ‫االتصال‬( ‫على‬ ‫ضغط‬OK( ‫اسم‬ ‫تحمل‬ ‫التي‬ ‫السابقة‬ ‫الواجهة‬ ‫لنا‬ ‫فتفتح‬ )Data Source
Configuration Wizard‫عليها‬ ‫ومكتوب‬ + ‫عالمة‬ ‫عليها‬ ‫تفرع‬ ‫أداة‬ ‫األسف‬ ‫في‬ ‫نرى‬ )
(Connection String‫هنا‬ ‫من‬ ‫نستطيع‬ ‫االتصال‬ ‫كود‬ ‫أسفلها‬ ‫لنا‬ ‫فيظهر‬ + ‫عالمة‬ ‫على‬ ‫نضغط‬ )
‫ا‬ ‫نص‬ ‫تحديد‬ ‫مكان‬ ‫في‬ ‫ولصقه‬ ‫بنسخة‬ ‫نقوم‬ ‫أن‬. ‫التصال‬
‫مالحظة‬

Contenu connexe

Similaire à Www.kutub.info 17040

دليل البرمجة باستخدام Dynamo DB للمبتدئين
دليل البرمجة باستخدام Dynamo DB للمبتدئيندليل البرمجة باستخدام Dynamo DB للمبتدئين
دليل البرمجة باستخدام Dynamo DB للمبتدئينIsmaeel Enjreny
 
What is no sql
What is no sqlWhat is no sql
What is no sqlGarmian
 
الدرس العاشر
الدرس العاشرالدرس العاشر
الدرس العاشرAnas Aloklah
 
أنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتأنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتMahmoud Almadhoun
 
Database system concepts and architecture
Database system concepts and architectureDatabase system concepts and architecture
Database system concepts and architectureMahmoud Almadhoun
 
قواعد البيانات
قواعد البياناتقواعد البيانات
قواعد البياناتMoselhy Hussein
 
VB.net Database Chapter 1
VB.net Database Chapter 1VB.net Database Chapter 1
VB.net Database Chapter 1Haytham Malek
 
مقدمة في قواعد البيانات
مقدمة في قواعد البياناتمقدمة في قواعد البيانات
مقدمة في قواعد البياناتDrMohammed Qassim
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptMolham Al-Maleh
 
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...Crossref
 
منهاج بناء و تصميم مواقع الانترنيت
منهاج بناء و تصميم مواقع الانترنيتمنهاج بناء و تصميم مواقع الانترنيت
منهاج بناء و تصميم مواقع الانترنيتDrMohammed Qassim
 
معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز دجلة بالمز
 
تصميمات قواعد البيانات
تصميمات قواعد البيانات تصميمات قواعد البيانات
تصميمات قواعد البيانات hendgamagmail
 

Similaire à Www.kutub.info 17040 (20)

دليل البرمجة باستخدام Dynamo DB للمبتدئين
دليل البرمجة باستخدام Dynamo DB للمبتدئيندليل البرمجة باستخدام Dynamo DB للمبتدئين
دليل البرمجة باستخدام Dynamo DB للمبتدئين
 
What is no sql
What is no sqlWhat is no sql
What is no sql
 
الدرس العاشر
الدرس العاشرالدرس العاشر
الدرس العاشر
 
6 ado.net
6 ado.net6 ado.net
6 ado.net
 
أنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتأنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البيانات
 
Database system concepts and architecture
Database system concepts and architectureDatabase system concepts and architecture
Database system concepts and architecture
 
قواعد البيانات
قواعد البياناتقواعد البيانات
قواعد البيانات
 
VB.net Database Chapter 1
VB.net Database Chapter 1VB.net Database Chapter 1
VB.net Database Chapter 1
 
مقدمة في قواعد البيانات
مقدمة في قواعد البياناتمقدمة في قواعد البيانات
مقدمة في قواعد البيانات
 
1
11
1
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScript
 
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
 
منهاج بناء و تصميم مواقع الانترنيت
منهاج بناء و تصميم مواقع الانترنيتمنهاج بناء و تصميم مواقع الانترنيت
منهاج بناء و تصميم مواقع الانترنيت
 
COMPLEX_DATA.pptx
COMPLEX_DATA.pptxCOMPLEX_DATA.pptx
COMPLEX_DATA.pptx
 
Database Administration
Database AdministrationDatabase Administration
Database Administration
 
Moodle plugins programing manual
Moodle plugins programing manualMoodle plugins programing manual
Moodle plugins programing manual
 
معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز
 
الجداول
الجداولالجداول
الجداول
 
عرض درس الجداول
عرض درس الجداولعرض درس الجداول
عرض درس الجداول
 
تصميمات قواعد البيانات
تصميمات قواعد البيانات تصميمات قواعد البيانات
تصميمات قواعد البيانات
 

Www.kutub.info 17040

  • 1. hamza ‫قواعد‬ ‫ربط‬‫قواعد‬ ‫ربط‬‫البيانات‬‫البيانات‬AAcccceessss‫و‬‫و‬SSqqll sseerrvveerr ‫الـ‬ ‫بلغة‬‫الـ‬ ‫بلغة‬cc##‫تقنية‬ ‫باستخدام‬‫تقنية‬ ‫باستخدام‬aaddoo..nneett
  • 2. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 2 ‫إهداء‬
  • 3. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 3 ‫واإلس‬ ‫األكسس‬ ‫البيانات‬ ‫بقواعد‬ ‫شارب‬ ‫السي‬ ‫برامج‬ ‫ربط‬ ‫شرح‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫نتناول‬ ‫النقطة‬ ‫هذه‬ ‫على‬ ‫ركزوا‬ ‫ولكن‬ ‫باإلكسس‬ ‫هو‬ ‫الشرح‬ ‫اغلب‬ ‫كان‬ ‫وان‬ ‫وحتى‬ ‫سرفر‬ ‫إل‬ ‫كيو‬ ‫نص‬ ‫واختالف‬ ‫األسماء‬ ‫مجال‬ ‫اختالف‬ ‫هو‬ ‫القاعدتين‬ ‫مابين‬ ‫الشرح‬ ‫في‬ ‫البسيط‬ ‫التغيير‬ ‫أن‬ ‫و‬ ‫االتصال‬‫ا‬ ‫الشرح‬ ‫استخدام‬ ‫تستطيع‬‫سرفر‬ ‫إل‬ ‫كيو‬ ‫االس‬ ‫لغة‬ ‫في‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫لمقدم‬ ‫السابقتين‬ ‫النقطتين‬ ‫بعد‬ ‫عليك‬ ‫فما‬‫الـ‬ ‫تتبع‬ ‫التي‬ ‫الكائنات‬ ‫اشتقاق‬ ‫تغير‬ ‫أن‬ ‫إال‬ (OLDEB( ‫فئة‬ ً‫ال‬‫مث‬ )OleDbConnection‫بيانات‬ ‫قاعدة‬ ‫بإستخدام‬ ‫اإلتصال‬ ‫فئة‬ ‫هي‬ ) ‫إل‬ ‫كيو‬ ‫اإلس‬ ‫بيانات‬ ‫قاعدة‬ ‫استخدام‬ ‫عند‬ ‫انه‬ ‫واألختالف‬ ‫األكسس‬ ‫نوع‬ ‫من‬‫اننا‬ ‫سرفر‬ ( ‫كلمة‬ ‫نغير‬OLDEB( ‫بكلمة‬ )SQL( ‫هكذا‬ ‫سيصبح‬ ‫يعني‬ )SQLConnection‫كل‬ ‫وفي‬ ) ( ‫بكلمة‬ ‫تبدأ‬ ‫الذي‬ ‫الفئات‬OLDEB(‫بكلمة‬ ‫إستبدالها‬ ‫سوى‬ ‫علينا‬ ‫ما‬ )SQL. ) ‫و‬‫بالعربية‬ ‫مناهج‬ ‫وجود‬ ‫في‬ ‫صعوبة‬ ‫من‬ ‫القيته‬ ‫ما‬ ‫هو‬ ‫الكتاب‬ ‫هذا‬ ‫ألكتب‬ ‫دعاني‬ ‫ما‬ ‫إن‬ ‫وأ‬ ‫اإلجراءات‬ ‫لهذه‬ ‫المبسط‬ ‫الشرح‬ ‫تقدم‬‫أي‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫كتبته‬ ‫ما‬ ‫من‬ ‫يستفيد‬ ‫أن‬ ‫رجوا‬ ‫تراسلوني‬ ‫أن‬ ‫منكم‬ ‫ارجوا‬ ‫أسئلة‬ ‫أية‬ ‫هناك‬ ‫كان‬ ‫وأن‬ ‫تقصير‬ ‫أي‬ ‫عن‬ ‫وأعذروني‬ ‫شخص‬ . ‫اإليميالت‬ ‫احد‬ ‫على‬ ‫لكم‬ ‫امتناني‬ ‫ُعسي‬‫ب‬‫ال‬ ‫حزام‬ ‫عبده‬ ‫محمد‬ ‫علي‬ ‫حمزة‬ ‫حاسوب‬ ‫برمجة‬-‫اليمن‬ ‫مقدمة‬
  • 4. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 4 ‫بدرس‬ ‫البسيطة‬ ‫دروسنا‬ ‫من‬ ‫درس‬ ‫أول‬ ‫سنبدأ‬‫في‬ ‫بسيطة‬ ‫بيانات‬ ‫قاعدة‬ ‫إنشاء‬ ‫كيفية‬ . ‫األكسس‬ ‫ثم‬ ‫البرامج‬ ‫كافة‬ ‫ثم‬ ‫ابدأ‬ ‫قائمة‬ ‫على‬ ‫نضغط‬Microsoft Office‫ثم‬Microsoft Office Access‫وبعد‬‫أن‬‫على‬ ‫نضغط‬ ‫البرنامج‬ ‫واجهة‬ ‫لنا‬ ‫تفتح‬(‫بيانات‬ ‫قاعدة‬ ‫فارغة‬)‫الصورة‬ ‫في‬ ‫كما‬ 1/‫جديدة‬ ‫فارغة‬ ‫بيانات‬ ‫قاعدة‬ 2/‫البيانات‬ ‫قاعدة‬ ‫تسمية‬‫باالسم‬‫تشاء‬ ‫الذي‬ 3/‫المكان‬ ‫واختر‬ ‫استعراض‬ ‫على‬ ‫اضغط‬ ‫تنشئها‬ ‫سوف‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫حفظ‬ ‫مكان‬ ‫الذي‬‫تريده‬ ‫المثال‬ ‫هذا‬ ‫وفي‬‫أنا‬‫االسم‬ ‫استخدمت‬lesson7 ‫على‬ ‫الضغط‬ ‫ثم‬ ‫ومن‬‫إنشاء‬‫ليتم‬‫إنشاء‬‫بك‬ ‫الخاصة‬ ‫البيانات‬ ‫قاعدة‬. -‫الواجهة‬ ‫هذه‬ ‫لنا‬ ‫تفتح‬ ‫األكسس‬ ‫في‬ ‫مقدمة‬
  • 5. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 5 1/‫على‬ ‫الضغط‬(‫عرض‬)‫الجديد‬ ‫الجدول‬ ‫تصميم‬ ‫إلظهار‬ ‫الشاشة‬ ‫يمين‬ ‫أعلى‬ ‫في‬ 2/‫تريده‬ ‫الذي‬ ‫االسم‬ ‫اختر‬ ‫الجديد‬ ‫الجدول‬ ‫بتسمية‬ ‫نقوم‬ ‫أن‬ ‫منا‬ ‫يطلب‬. ‫و‬‫أنا‬‫باالسم‬ ‫عليه‬ ‫بالتطبيق‬ ‫نقوم‬ ‫سوف‬ ‫الذي‬ ‫الجدول‬ ‫أسميت‬ ‫قد‬friends ‫من‬ ‫نحتاج‬ ‫وكما‬ ‫نريد‬ ‫كما‬ ‫جدولنا‬ ‫بتصميم‬ ‫فنقوم‬ ‫التصميم‬ ‫صفحة‬ ‫لنا‬ ‫تفتح‬ ‫ذلك‬ ‫بعد‬ ‫أعمدة‬‫وأنواعها‬‫البيانية‬ 1/‫بتعبئة‬ ‫قمنا‬‫أسماء‬‫األعمدة‬‫احتياجنا‬ ‫حسب‬ ‫لها‬ ‫البياني‬ ‫والنوع‬ ‫الجدول‬ ‫في‬ ‫الصديق‬ ‫رقم‬ ‫واخترنا‬‫أو‬(fri_no)‫مفتاح‬ ‫ليكون‬‫أساسي‬ 2/‫على‬ ‫بالضغط‬ ‫البيانات‬ ‫ورقة‬ ‫عرض‬ ‫طريقة‬ ‫في‬ ‫الجدول‬ ‫لعرض‬ ‫نعود‬(‫عرض‬) ‫نعم‬ ‫على‬ ‫بالظغط‬ ‫بنوافق‬ ‫به‬ ‫ماقمنا‬ ‫حفظنا‬ ‫قد‬ ‫نكن‬ ‫لم‬ ‫ان‬ ‫الحفظ‬ ‫تريد‬ ‫هل‬ ‫لنا‬ ‫تظهر‬ ‫سوف‬. ‫باع‬ ‫الجدول‬ ‫لنا‬ ‫ليظهر‬‫بالبيانات‬ ‫بتعبئتها‬ ‫نقوم‬ ‫البيانات‬ ‫من‬ ‫خالية‬ ‫مدته‬ ‫األكسس‬ ‫في‬ ‫مقدمة‬
  • 6. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 6 ً‫ا‬‫تقريب‬ ‫هكذا‬ ‫الحفظ‬ ‫قبل‬ ‫شكلها‬ ‫ويكون‬ ‫بالحفظ‬ ‫بعدها‬ ‫ونقوم‬ ‫االكسس‬ ‫برنامج‬ ‫نغلق‬. ‫األكسس‬ ‫في‬ ‫مقدمة‬
  • 7. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 7 ‫التي‬ ‫التقنية‬ ‫هذه‬ ‫عن‬ ‫األمور‬ ‫بعض‬ ‫نعرف‬ ‫ان‬ ‫يجب‬ ‫وطريقته‬ ‫الربط‬ ‫في‬ ‫ندخل‬ ‫ان‬ ‫قبل‬ ‫تقنية‬ ‫وهي‬ ‫مايكروسوفت‬ ‫شركة‬ ‫ابتكرتها‬ado.net‫في‬ ‫نستخدمها‬ ‫التي‬ ‫التقنية‬ ‫وهي‬ ‫الربط‬ ‫عملية‬. ‫ما‬ ‫هناك‬‫لتقنية‬ ‫السبعة‬ ‫باألعمدة‬ ‫يسمى‬ado.net‫او‬ ‫كالسات‬ ‫وهي‬ ‫مايكروسوفت‬ ‫من‬ ‫وهي‬ ‫المختلفة‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫الواجهات‬ ‫برامج‬ ‫ربط‬ ‫بعملية‬ ‫للتحكم‬ ‫لنا‬ ‫تقدمها‬ ‫فئات‬ 1.‫فئة‬‫االتصال‬(connection. ) ‫المخصصة‬ ‫الفئة‬ ‫وهي‬‫لالتصال‬‫وما‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫فيحدد‬ ‫البيانات‬ ‫بقواعد‬ ‫ذلك‬ ‫وغير‬ ‫المستخدم‬ ‫واسم‬ ‫كالتشفير‬ ‫وسائط‬ ‫من‬ ‫بذلك‬ ‫يتعلق‬. 2.‫األمر‬ ‫فئة‬(command.) ‫أوامر‬ ‫من‬ ‫ما‬ ‫أمر‬ ‫لتنفيذ‬ ‫المخصصة‬ ‫الفئة‬ ‫وهي‬SQL‫المختلفة‬,‫إجراء‬ ‫أي‬ ‫أو‬ ‫البيانات‬ ‫قاعدة‬ ‫إدارة‬ ‫نظام‬ ‫في‬ ‫مخزن‬. 3.‫البيانات‬ ‫قارئ‬ ‫فئة‬(Data Reader.) ‫المتصل‬ ‫النمط‬ ‫في‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫فقط‬ ‫للقراءة‬ ‫تستخدم‬,‫يمكن‬ ‫والبيانات‬ ‫الخلف‬ ‫إلى‬ ‫الرجوع‬ ‫يمكن‬ ‫وال‬ ‫األمام‬ ‫إلى‬ ‫قراءتها‬,‫وتعتبر‬ ‫االستعالم‬ ‫بفئة‬ ‫وذلك‬ ً‫ا‬‫جد‬ ‫عالي‬ ‫أداء‬ ‫ذات‬. 4.‫مهيئ‬ ‫فئة‬(‫موصل‬)‫البيانات‬(Data Adapter.) ‫البيانات‬ ‫تعبئة‬ ‫على‬ ‫الفئة‬ ‫هذه‬ ‫تعمل‬‫مجموعة‬ ‫إلى‬ ‫البيانات‬ ‫قواعد‬ ‫من‬ ‫المختلفة‬ ‫معينة‬ ‫بيانات‬Dataset,‫مجموعة‬ ‫على‬ ‫أجريت‬ ‫التي‬ ‫التعديالت‬ ‫بتنفيذ‬ ‫تقوم‬ ‫كما‬ ‫البيانات‬ ‫قواعد‬ ‫على‬ ‫وعكسها‬ ‫البيانات‬ ‫من‬. 5.‫البيانات‬ ‫مجموعة‬ ‫فئة‬(Dataset.) ‫وتسمح‬ ‫الذاكرة‬ ‫في‬ ‫البيانات‬ ‫فيها‬ ‫تخزن‬ ‫البرمجية‬ ‫األنظمة‬ ‫من‬ ‫مجموعة‬ ‫هي‬ ‫بإدارتها‬.‫تمكننا‬ ‫الذاكرة‬ ‫في‬ ‫موجودة‬ ‫صغيرة‬ ‫بيانات‬ ‫قاعدة‬ ‫عن‬ ‫عبارة‬ ‫وهي‬ ً‫ا‬‫أيض‬ ‫جداول‬ ‫انشاء‬ ‫من‬‫ال‬ ‫وهي‬ ‫بعالقات‬ ‫الجداول‬ ‫هذه‬ ‫وربط‬‫بيانات‬ ‫مصدر‬ ‫على‬ ‫تعتمد‬ ‫محدد‬. 6.‫األمر‬ ‫باني‬ ‫فئة‬(CommandBuilder.) ‫الــ‬ ‫قبل‬ ‫من‬ ‫الفئة‬ ‫هذه‬ ‫تستخدم‬Data Adapter‫الختيار‬‫وتحديث‬ ‫وإدخال‬ ‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫السجالت‬ ‫وحذف‬,‫على‬ ‫ولكن‬ ‫األمر‬ ‫فئة‬ ‫بعمل‬ ‫تقوم‬ ‫الفئة‬ ‫فهذه‬ ‫البيانات‬ ‫مهيئ‬ ‫نوع‬ ‫من‬ ‫فئة‬. 7.‫البيانات‬ ‫ربط‬ ‫فئة‬(Bindingsource.) ‫أداة‬ ‫خصائص‬ ‫بإحدى‬ ‫ما‬ ‫فئة‬ ‫خصائص‬ ‫إحدى‬ ‫قيمة‬ ‫لربط‬ ‫المخصصة‬ ‫الفئة‬ ‫وهي‬ ‫معينة‬,‫و‬ ‫يتم‬ ‫بحيث‬‫ض‬‫تلقا‬ ‫األداة‬ ‫خاصية‬ ‫قيمة‬ ‫ع‬‫تغيرت‬ ‫كلما‬ ‫ئيا‬,‫والعكس‬... ‫في‬ ‫مقدمة‬ado.net
  • 8. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 8 ‫واحدة‬ ‫خاصية‬ ‫كأنهما‬ ‫الخاصيتين‬ ‫تصبح‬ ‫وبإختصار‬.‫الفئة‬ ‫هذه‬ ‫استخدام‬ ‫أن‬ ‫أي‬ ‫األداة‬ ‫خصائص‬ ‫إحدى‬ ‫محتويات‬ ‫ربط‬ ‫في‬(‫لمربع‬ ‫التابعة‬ ‫النص‬ ‫خاصية‬ ‫مثل‬ ‫النص‬. ) ‫تستطيع‬ ‫وال‬ ‫مهم‬ ‫فهو‬ ‫عنه‬ ‫نتحدث‬ ‫وأن‬ ‫البد‬ ‫آخر‬ ‫شيئا‬ ‫هناك‬‫أن‬‫نفسك‬ ‫عن‬ ‫تقول‬‫أن‬ ‫تقنية‬ ‫استخدام‬ ‫بإمكانك‬ado.net‫وهي‬ ‫به‬ ‫معرفة‬ ‫بدون‬(providers)‫وهي‬ ‫و‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫وسيطات‬‫االتصال‬(connection)‫وهي‬‫أنواع‬‫تعتمد‬ ‫الربط‬ ‫في‬ ‫المستخدمة‬ ‫البيانات‬ ‫قاعدة‬ ‫نوع‬ ‫على‬‫ولن‬‫أتعمق‬ً‫ا‬‫كثير‬ ‫فيها‬‫فهو‬ ‫بعض‬ ‫وسأذكر‬ ‫للمبتدئين‬‫أنواعها‬: ‫مزود‬‫الـ‬SQL Server‫التالي‬ ‫بالشكل‬ ‫ويكتب‬ Provider=SqlOLEDB; ‫األكسس‬ ‫مزود‬ ‫أكسس‬2003 Provider=Microsoft.Jet.OLEDB.4.0; ‫أكسس‬2007 Provider=Microsoft.ACE.OLEDB.12.0; ‫أكثر‬ ‫األمر‬ ‫لكم‬ ‫سيوضح‬ ‫التطبيق‬ ‫فإن‬ ‫جيد‬ ‫بشكل‬ ‫السابق‬ ‫تستوعبوا‬ ‫لم‬ ‫وإن‬ ‫حتى‬ ‫الكالسات‬ ‫هذه‬ ‫من‬ ‫بعض‬ ‫وسنستخدم‬(‫الفئات‬)‫للربط‬ ‫األول‬ ‫مشروعنا‬ ‫في‬ ‫ندخل‬ ‫وسوف‬‫إلى‬‫ف‬ ‫بالذهن‬ ‫لتترسخ‬ ‫األخرى‬ ‫تلو‬ ‫واحدة‬ ‫الربط‬ ‫طرق‬‫بنا‬ ‫هيا‬. ‫في‬ ‫مقدمة‬ado.net
  • 9. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 9 -‫البرنامج‬ ‫واجهة‬ ‫في‬ ‫ستوديو‬ ‫الفيجوال‬ ‫نفتح‬ ‫شارب‬ ‫السي‬ ‫بلغة‬ ‫جديد‬ ‫مشروع‬ ‫نفتح‬ File >> new >> project>>visual c# >>windows>>windows form application ‫الواجهة‬ ‫هذه‬ ‫ونصمم‬ ‫بعض‬ ‫بترقيم‬ ‫قمت‬‫األدوات‬ً‫ا‬‫جيد‬ ‫الكود‬ ‫نفهم‬ ‫لكي‬ ‫أسماءها‬ ‫لكم‬ ‫ألكتب‬ ‫في‬ ‫المهمة‬. 1.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_no). ‫في‬ ‫بياناته‬ ‫عرض‬ ‫يريد‬ ‫الذي‬ ‫الصديق‬ ‫برقم‬ ‫المستخدم‬ ‫يقوم‬ ‫أن‬ ‫ألجل‬ ‫وهذا‬ ‫النصية‬ ‫الصناديق‬. ‫يضع‬ ‫فهنا‬ ‫الجدول‬ ‫في‬ ‫األصدقاء‬ ‫احد‬ ‫بيانات‬ ‫في‬ ‫بالتعديل‬ ‫يقوم‬ ‫أن‬ ‫أراد‬ ‫إن‬ ً‫ا‬‫وأيض‬ ‫الصنا‬ ‫في‬ ‫الجديدة‬ ‫البيانات‬ ‫بكتابة‬ ‫ويقوم‬ ‫رقمه‬‫د‬‫يق‬. 2.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_show1. ) ‫الزر‬ ‫هذا‬‫صديق‬ ‫بيانات‬ ‫لعرض‬‫قد‬ ‫يكون‬ ‫محدد‬‫في‬ ‫رقمه‬ ‫ادخل‬(txt_no). 3.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_del. ) ‫في‬ ‫اسمه‬ ‫ادخل‬ ‫قد‬ ‫يكون‬ ‫محدد‬ ‫صديق‬ ‫بيانات‬ ‫لحذف‬ ‫الزر‬ ‫هذا‬(txt_no). 4.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_add. ) ‫يقوم‬ ‫الزر‬ ‫هذا‬‫بإضافة‬‫الصناديق‬ ‫في‬ ‫المكتوبة‬ ‫البيانات‬ ‫من‬ ‫للجدول‬ ‫جديد‬ ‫صديق‬ ‫الخمسة‬. 5.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_fri_no. ) ‫الصديق‬ ‫رقم‬ ‫المتصلة‬ ‫البيئة‬
  • 10. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 01 6.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_fri_name. ) ‫الصديق‬ ‫اسم‬ 7.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_city. ) ‫المدينة‬ 8.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_mobile. ) ‫الجوال‬ ‫رقم‬ 9.‫نصي‬ ‫صندوق‬(textbox)‫بتسميته‬ ‫وقمنا‬(txt_job. ) ‫الوظيفة‬ 10.‫زر‬(button)‫بتسميته‬ ‫وقمنا‬(btn_upd. ) ‫في‬ ‫المكتوب‬ ‫الرقم‬ ‫صاحب‬ ‫الصديق‬ ‫بيانات‬ ‫بتعديل‬ ‫الزر‬ ‫هذا‬ ‫يقوم‬1‫مستخدما‬ ‫الصناديق‬ ‫في‬ ‫المكتوبة‬ ‫البيانات‬ ‫بذالك‬. ‫نبدأ‬ ‫اآلن‬ ‫ان‬ ‫يجب‬ ‫بيانات‬ ‫وقاعدة‬ ‫برنامج‬ ‫مابين‬ ‫بالربط‬ ‫لنقوم‬ ً‫ال‬‫او‬‫الخاص‬ ‫االسماء‬ ‫فضاء‬ ‫نضيف‬ ‫في‬ ‫الكود‬ ‫نافذة‬ ‫في‬ ‫وتوجد‬ ‫المكاتب‬ ‫هو‬ ‫االسماء‬ ‫وفضاء‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫النوع‬ ‫بهذا‬ ً‫ا‬‫غالب‬ ‫منها‬ ‫نرى‬ ‫األعلى‬ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; System.Windows.Forms;using ‫بالبرنامج‬ ‫نستخدمها‬ ‫سوف‬ ‫التي‬ ‫البيانات‬ ‫بقاعدة‬ ‫الخاصة‬ ‫المكتبة‬ ‫نضيف‬ ‫وهنا‬ ‫بتحديد‬ ‫نقوم‬‫التي‬ ‫المكتبة‬‫عليها‬ ‫نشتغل‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫نوع‬ ‫من‬. ‫الـ‬ ‫في‬SQLServer‫المكتبة‬ ‫نستخدم‬ using System.Data.SqlClient; ‫المكتبة‬ ‫نستخدم‬ ‫األكسس‬ ‫في‬ using System.Data.OleDb; ‫المتصلة‬ ‫البيئة‬
  • 11. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 00 ‫األكواد‬ ‫بكتابة‬ ‫سنبدأ‬ ‫اآلن‬ ‫الكود‬ ‫نافذة‬ ‫إلى‬ ‫ندخل‬‫على‬ ‫بالضغط‬F7‫العام‬ ‫القسم‬ ‫إلى‬ ً‫ا‬‫وتحديد‬(public) ‫األكواد‬ ‫هذي‬ ‫وكتابة‬ ‫المتغيرات‬ ‫بتعريف‬ ‫نبدأ‬ public partial class Form1 : Form { 1| OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lesson7.accdb"); 2| OleDbCommand cmd; 3| OleDbDataReader dr; 4| DataTable dt = new DataTable(); Form1()public ‫؟‬ ‫األكواد‬ ‫هذه‬ ‫هي‬ ‫ما‬ 1.‫الكالس‬ ‫من‬ ‫كائن‬ ‫باشتقاق‬ ‫قمنا‬OleDbConnection‫وأسميناه‬con‫الكالس‬ ‫وهذا‬ ‫به‬ ‫الخاصة‬ ‫الباراميترات‬ ‫ومن‬ ‫البيانات‬ ‫بقاعدة‬ ‫االتصال‬ ‫بتنفيذ‬ ‫يقوم‬ ‫الذي‬ ‫هو‬‫انه‬ ‫أوال‬ ‫أعطيناه‬ ‫أننا‬ ‫نرى‬ ‫الكود‬ ‫رأينا‬ ‫فلو‬ ‫البيانات‬ ‫قاعدة‬ ‫ومسار‬ ‫المزود‬ ‫يستقبل‬ ‫البيانات‬ ‫بقاعدة‬ ‫الخاص‬ ‫المزود‬Provider=Microsoft.ACE.OLEDB.12.0;‫ومن‬ ‫اكسس‬ ‫بيانات‬ ‫قاعدة‬ ‫استخدمنا‬ ‫اننا‬ ‫الواضح‬2007. ‫واسمها‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫اعطيناه‬ ‫ثم‬Source=lesson7.accdbData‫لم‬ ‫هنا‬ ً‫ا‬‫وطبع‬ ‫البرنامج‬ ‫مسار‬ ‫في‬ ‫وضعناها‬ ‫ألننا‬ ‫باسمها‬ ‫واكتفينا‬ ‫البيانات‬ ‫قاعدة‬ ‫مسار‬ ‫لكتابة‬ ‫نحتاج‬ ‫األساسي‬F:c#2014lesson7lesson7binDebug 2.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬Command‫األوامر‬ ‫وهي‬‫وأسميناه‬cmd‫نص‬ ‫سنحمله‬ ‫والذي‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫نحتاجها‬ ‫التي‬ ‫األوامر‬. 3.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬DataReader‫واسميناه‬ ‫البيانات‬ ‫قارئ‬ ‫وهي‬dr‫لقراءة‬ ‫وهو‬ ‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫البيانات‬. 4.‫فئة‬ ‫من‬ ‫كائن‬ ‫اشتققنا‬DataTable‫نستطيع‬ ‫فئة‬ ‫وهي‬‫أن‬‫جدولية‬ ‫قيم‬ ‫نحملها‬‫وأسميناه‬ dt. ‫المتصلة‬ ‫البيئة‬
  • 12. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 02 ‫األدوات‬ ‫باقي‬ ‫في‬ ‫نبدأ‬ ‫اآلن‬ ‫على‬ ‫بالضغط‬ ‫التصميم‬ ‫نافذة‬ ‫الى‬ ‫نعود‬SHIFT+F7 1.‫رقم‬ ‫الزر‬ ‫في‬2‫و‬‫الذي‬‫بتسميته‬ ‫قمنا‬(btn_show1. )‫التالي‬ ‫الكود‬ ‫نكتب‬ 2. try 3. { 4. cmd = new OleDbCommand("select * from friends where fri_no=" +txt_no.Text +" ", con); 5. con.Open(); 6. dr = cmd.ExecuteReader(); 7. dr.Read(); 8. txt_fri_no.Text = dr["fri_no"].ToString(); 9. txt_fri_name.Text = dr["fri_name"].ToString(); 10. txt_city.Text = dr["city"].ToString(); 11. txt_mobile.Text = dr["mobile"].ToString(); 12. txt_job.Text = dr["job"].ToString(); 13. dr.Close(); 14. 15. MessageBox.Show("‫تم‬ ‫العرض‬ "); 16. } 17. catch (OleDbException xx) 18. { 19. MessageBox.Show("‫هناك‬ ‫خطأ‬ ‫ما‬ " + xx.Message); 20. } 21. finally 22. { 23. con.Close(); } ‫من‬ ‫األسطر‬ ‫هو‬ ‫الكود‬ ‫هذا‬ ‫في‬ ‫المهم‬4‫الى‬13‫دوال‬ ‫واستخدمنا‬try‫و‬catch‫لتفادي‬ ‫الك‬ ‫نشرح‬ ‫تعالوا‬ ‫فقط‬ ‫اخطاء‬ ‫في‬ ‫الوقوع‬‫ود‬. 4/‫الكائن‬ ‫حملنا‬cmd‫فيه‬ ‫اشترطنا‬ ‫األمر‬ ‫ونص‬ ‫األتصال‬ ‫مفتاح‬ ‫و‬ ‫األمر‬ ‫نص‬ ‫أن‬‫في‬ ‫المدخل‬ ‫النص‬ ‫يساوي‬ ‫الصديق‬ ‫رقم‬ ‫يكون‬(txt_no) 5/‫فتحنا‬‫االتصال‬‫دالة‬ ‫باستخدام‬Open();‫للكائن‬ ‫التابعة‬con. 6/‫بطلبها‬ ‫قام‬ ‫التي‬ ‫البيانات‬ ‫أسندنا‬cmd‫البيانات‬ ‫لقارئ‬dr 7/‫جعل‬dr‫البيانات‬ ‫يقرأ‬. 8/‫أدخلنا‬‫الخاصية‬ ‫في‬Text‫النصوص‬ ‫للصندوق‬(txt_fri_no)‫قمنا‬ ‫قيمة‬ ‫من‬ ‫بأخذها‬dr‫هذا‬ ‫الى‬ ‫البيانات‬ ‫منه‬ ‫سنأخذ‬ ‫الذي‬ ‫الحقل‬ ‫بتحديد‬ ‫وقمنا‬ ‫باألمر‬ ‫الصندوق‬].ToString();"fri_no"[‫حيث‬]"fri_no"[‫الحقل‬ ‫اسم‬ ‫هي‬ ‫هذا‬ ‫النصوص‬ ‫صندوق‬ ‫في‬ ‫بعرضها‬ ‫سنقوم‬ ‫الجدول‬ ‫في‬‫نكتب‬ ‫ان‬ ‫ونستطيع‬ ‫نكتب‬ ‫أن‬ ‫نستطيع‬ ‫هنا‬ ً‫ال‬‫مث‬ ‫الحقل‬ ‫رتبة‬0‫نكتب‬ ‫بأخطاء‬ ‫الوقوع‬ ‫لتفادي‬ ‫ولكن‬ ‫الحقل‬ ‫اسم‬. ‫البيئة‬‫المتصلة‬
  • 13. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 03 9/‫م‬ ‫فعلنا‬ ‫وكما‬‫بقية‬ ‫مع‬ ‫نفعل‬ ‫الصديق‬ ‫برقم‬ ‫الخاص‬ ‫النص‬ ‫صندوق‬ ‫ع‬ ‫سيعرضه‬ ‫الذي‬ ‫الحقل‬ ‫هو‬ ‫ما‬ ‫نصي‬ ‫صندوق‬ ‫كل‬ ‫محددين‬ ‫الصناديق‬. 13/‫نقوم‬‫بإغالق‬.‫االتصال‬ ‫الزر‬ ‫الى‬ ‫ننتقل‬ ‫االن‬‫الثاني‬ ‫رقم‬ ‫الزر‬ ‫في‬3‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_del. ) ‫األكواد‬ ‫هذه‬ ‫بكتابة‬ ‫نقوم‬ cmd = new OleDbCommand("delete from friends where fri_no=" + txt_no.Text + "", con); con.Open(); cmd.ExecuteNonQuery(); MessageBox.Show("‫تم‬ ‫حذف‬ ‫بيانات‬ ‫الصديق‬ ‫رقم‬ " + txt_no.Text); ‫األوا‬ ‫كائن‬ ‫بأعطاء‬ ‫قمنا‬ ‫األول‬ ‫السطر‬ ‫في‬‫الصديق‬ ‫بيانات‬ ‫بحذف‬ ‫الالزم‬ ‫األمر‬ ‫مر‬ ‫ال‬ ‫في‬ ‫المحدد‬ ‫الرقم‬ ‫صاحب‬‫النص‬ ‫صندوق‬(txt_no) ‫األتصال‬ ‫مفتاح‬ ‫مع‬ ‫يليه‬ ‫الذي‬ ‫بالسطر‬ ‫األتصال‬ ‫فتحنا‬ ‫ثم‬ ExecuteNonQuery(); ‫الدالة‬ ‫بإستخدام‬ ‫األمر‬ ‫بتنفيذ‬ ‫قمنا‬ ‫ثم‬ ExecuteReader(); ‫مثلها‬ ‫األمر‬ ‫لتنفيذ‬ ‫نستخدمها‬ ‫الدالة‬ ‫وهذه‬‫مثل‬ ‫بينهما‬ ‫والفرق‬‫أن‬‫نستخدمها‬ ‫األولى‬‫إذا‬‫األمر‬ ‫من‬ ‫مرتجعة‬ ‫بيانات‬ ‫هناك‬ ‫كان‬‫أما‬ ‫عمليات‬ ‫مثل‬ ‫مرتجعة‬ ‫بيانات‬ ‫هناك‬ ‫يكون‬ ‫ال‬ ‫عندما‬ ‫نستخدمها‬ ‫فنحن‬ ‫الثانية‬‫اإلضافة‬ ‫والتعديل‬ ‫والحذف‬. Try & Catch & Finally ‫جملة‬try‫بين‬ ‫الموجود‬ ‫الكود‬ ‫ينفذ‬ ‫أن‬ ‫يجرب‬ ‫أن‬ ‫المترجم‬ ‫إخبار‬ ‫وهي‬ ‫حاول‬ ‫أو‬ ‫جرب‬ ‫هي‬ ‫بالمعنى‬ ‫استخدام‬ ‫بعد‬ ‫ويجب‬ ‫األخطاء‬ ‫لتفادي‬ ‫لها‬ ‫التابعة‬ ‫الحاصرتين‬try‫دالة‬ ‫استخدام‬ ‫يجب‬catch ‫أن‬ ‫والخالصة‬try‫بعد‬ ‫ثم‬ ‫تنفيذه‬ ‫تريد‬ ‫الذي‬ ‫الكود‬ ‫يكتب‬ ‫بينهما‬ ‫وما‬ ‫نهاية‬ ‫وحاصرة‬ ‫بداية‬ ‫حاصرة‬ ‫لها‬ ‫قفل‬‫استخدام‬ ‫يجب‬ ‫الحاصرة‬catch‫كان‬ ‫إذا‬ ‫المترجم‬ ‫اليه‬ ‫ينتقل‬ ‫الذي‬ ‫الثاني‬ ‫الخيار‬ ‫بمقام‬ ‫تقوم‬ ‫وهي‬ ‫داخل‬ ‫في‬ ‫الذي‬ ‫بالكود‬ ‫خطأ‬ ‫هناك‬try‫والـ‬catch‫المراد‬ ‫الكود‬ ‫داخلها‬ ‫في‬ ‫يكتب‬ ‫حاصرتين‬ ‫لها‬ ‫ايضا‬ ‫جملة‬ ‫تنفيذ‬ ‫يتم‬ ‫لم‬ ‫إذا‬ ‫تنفيذ‬try‫ال‬ ‫حاصرة‬ ‫فتح‬ ‫قبل‬ ‫أيضا‬ ‫ونستطيع‬catch‫اشتقاق‬‫من‬ ‫كائن‬‫أي‬ ‫الفئة‬ ‫من‬ ‫كائن‬ ‫باشتقاق‬ ‫قمنا‬ ‫المثال‬ ‫هذا‬ ‫وفي‬ ‫لنستخدمه‬ ‫كالس‬OleDbException‫بمقام‬ ‫وهو‬ ‫األس‬ ‫بلغة‬ ‫االستثناء‬‫كي‬‫الكائن‬ ‫واسمينا‬ ‫إل‬ ‫و‬xx‫جملة‬ ‫في‬ ‫وجعلنا‬catch‫الذي‬ ‫بالخطأ‬ ‫تخبرنا‬ ‫رسالة‬ ‫الكائن‬ ‫في‬ ‫دالة‬ ‫واستخدمنا‬ ‫وقع‬xx‫جم‬ ‫ان‬ ‫هنا‬ ‫عرفنا‬ . ‫الرسالة‬ ‫نص‬ ‫لنا‬ ‫لتعرض‬‫ال‬ ‫لة‬catch‫اذا‬ ‫تنفذ‬ ‫الـ‬ ‫جملة‬ ‫تنفذ‬ ‫لم‬try‫الـ‬ ‫أما‬finally‫جمل‬ ‫تنفذت‬ ‫سواء‬ ‫الحالتين‬ ‫كلتا‬ ‫في‬ ‫جملها‬ ‫تنفذ‬ ‫دالة‬ ‫فهي‬try ‫جمل‬ ‫او‬catch. ‫المتصلة‬ ‫البيئة‬
  • 14. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 04 ‫قمنا‬ ‫يليه‬ ‫الذي‬ ‫السطر‬ ‫وفي‬‫بإظهار‬‫ويمك‬ ‫الحذف‬ ‫تم‬ ‫بأنه‬ ‫تفيد‬ ‫للمستخدم‬ ‫رسالة‬‫ننا‬ ‫ب‬‫عده‬‫إغالق‬‫االتصال‬‫قمت‬ ‫ألني‬ ‫االتصال‬ ‫إغالق‬ ‫كود‬ ‫اكتب‬ ‫ولم‬‫ب‬‫دوال‬ ‫استخدام‬ ‫األخطاء‬ ‫من‬ ‫التفادي‬. ‫فيها‬ ‫اإلغالق‬ ‫كود‬ ‫ووضعت‬ ‫يلية‬ ‫الذي‬ ‫للزر‬ ‫ننتقل‬ ‫وهو‬ ‫يليه‬ ‫الذي‬ ‫للزر‬ ‫ننتقل‬‫رقم‬ ‫الزر‬4‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_add)‫هذا‬ ‫به‬ ‫ونكتب‬ ‫الكود‬ try { (1) cmd = new OleDbCommand("insert into friends (fri_no,fri_name,city,mobile,job) values ('" + txt_fri_no.Text + "','" + txt_fri_name.Text + "','" + txt_city.Text + "','" + txt_mobile.Text + "','" + txt_job.Text + "')", con); (2) con.Open(); (3) cmd.ExecuteNonQuery(); (4) MessageBox.Show("‫تمت‬ ‫االضافة‬ "); } catch (OleDbException xx) { MessageBox.Show(" ‫خطأ‬ " + xx.Message); } finally { con.Close(); } ‫للشرح‬ ‫اآلن‬ ‫من‬ ‫األخضر‬ ‫باللون‬ ‫بترقيمها‬ ‫قمت‬ ‫الذي‬ ‫األسطر‬ ‫بشرح‬ ‫سأقوم‬1:4‫دوال‬ ‫اشرح‬ ‫ألن‬ ‫داعي‬ ‫فال‬ Try & Catch & Finally‫فأعتقد‬‫إنكم‬ً‫ا‬‫سابق‬ ‫عنها‬ ‫تحدثنا‬ ‫فقد‬ ‫تعرفونها‬ 1.‫الكائن‬ ‫بإعطاء‬ ً‫ا‬‫سابق‬ ‫قمنا‬ ‫كما‬cmd‫الـ‬ ‫أمر‬sql‫مشروعنا‬ ‫في‬ ‫هو‬ ‫الذي‬ ‫االتصال‬ ‫مفتاح‬ ‫و‬ con‫بالـ‬ ‫الخاص‬ ‫اإلضافة‬ ‫أمر‬ ‫باستخدام‬ ‫قمنا‬ ‫السطر‬ ‫هذا‬ ‫في‬ ‫فعلنا‬ ‫وهكذا‬sql‫نأخذ‬ ‫ولكي‬ ( ‫القيم‬values‫دمج‬ ‫في‬ ‫نستخدمها‬ ‫الذي‬ + ‫العالمة‬ ‫نستخدم‬ ‫النصية‬ ‫الصناديق‬ ‫داخل‬ ‫من‬ ) ‫التركيز‬ ‫يجب‬ ‫ولكن‬ ‫بينها‬ ‫الربط‬ ‫او‬ ‫النصية‬ ‫السالسل‬‫والمزدوجة‬ ‫األحادية‬ ‫التنصيصات‬ ‫على‬ ‫هو‬ ‫والذي‬ ‫االتصال‬ ‫كائن‬ ‫بتسمية‬ ‫قمنا‬ ‫األمر‬ ‫وبعد‬con. 2.‫االتصال‬ ‫فتحنا‬con.Open();. 3.‫الدالة‬ ‫باستخدام‬ ‫األمر‬ ‫بتنفيذ‬ ‫قمنا‬cmd.ExecuteNonQuery();. 4.. ‫اإلضافة‬ ‫تمت‬ ‫قد‬ ‫بأنه‬ ‫تفيد‬ ‫للمستخدم‬ ‫توضيحية‬ ‫رسالة‬ ‫بعرض‬ ‫قمنا‬ ‫أنن‬ ‫الحظوا‬‫نكتب‬ ‫لم‬ ‫ا‬‫كود‬‫اال‬ ‫إغالق‬‫بكتابة‬ ‫قمنا‬ ‫ولكنا‬ ‫؟؟‬ ‫تصال‬‫دالة‬ ‫في‬finally‫في‬ ‫ستنفذ‬ ‫الذي‬ . ‫األحوال‬ ‫جميع‬ ‫المتصلة‬ ‫البيئة‬
  • 15. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 05 ‫ننتقل‬ ‫اآلن‬‫إلى‬‫التالي‬ ‫الزر‬ ‫رقم‬ ‫الزر‬ ‫وهو‬10‫والذي‬‫بتسميته‬ ‫قمنا‬(btn_upd. )‫التعديل‬ ‫بحفظ‬ ‫يقوم‬ ‫والذي‬ ‫الكود‬ ‫هذا‬ ‫فيه‬ ‫ونكتب‬ try { cmd = new OleDbCommand("update friends set fri_no=" + txt_fri_no.Text + ", fri_name='" + txt_fri_name.Text + "',city='" + txt_city.Text + "',mobile=" + txt_mobile.Text + ",job='" + txt_job.Text + "' where fri_no=" + txt_no.Text + "", con); con.Open(); cmd.ExecuteNonQuery(); MessageBox.Show("‫تم‬ ‫التعديل‬ "); } catch (OleDbException xx) { MessageBox.Show(" ‫خطأ‬ " + xx.Message); } finally { con.Close(); } ‫االضهافة‬ ‫لكهود‬ ‫كبيهرة‬ ‫بدرجهة‬ ‫مشهابة‬ ‫وههو‬ ‫مهره‬ ‫مهن‬ ‫اكثهر‬ ‫لهدينا‬ ‫تكهرر‬ ‫قهد‬ ‫انهه‬ ‫نرى‬ ‫الكود‬ ‫نرى‬ ‫عندما‬ ‫هـ‬‫ه‬‫ال‬ ‫هود‬‫ه‬‫ك‬ ‫هو‬‫ه‬‫ه‬ ‫هد‬‫ه‬‫الوحي‬ ‫هتالف‬‫ه‬‫واالخ‬sql‫هم‬‫ه‬‫رق‬ ‫هق‬‫ه‬‫وف‬ ‫هناديق‬‫ه‬‫الص‬ ‫هن‬‫ه‬‫م‬ ‫هدة‬‫ه‬‫الجدي‬ ‫هيم‬‫ه‬‫الق‬ ‫هع‬‫ه‬‫بوض‬ ‫هوم‬‫ه‬‫يق‬ ‫هو‬‫ه‬‫وه‬ . ‫األول‬ ‫بالصندوق‬ ‫المكتوب‬ ‫الصديق‬ ‫المتصلة‬ ‫البيئة‬
  • 16. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 06 ‫ما‬‫؟؟؟‬ ‫المنفصلة‬ ‫والبيئة‬ ‫المتصلة‬ ‫البيئة‬ ‫هي‬ ‫البيانات‬ ‫بقاعدة‬ ‫دائم‬ ‫اتصال‬ ‫على‬ ‫فيها‬ ‫نكون‬ ‫التي‬ ‫وهي‬ ‫المتصلة‬ ‫البيئة‬ ‫إطار‬ ‫في‬ ‫كان‬ ‫السابق‬ ‫الدرس‬ ‫المنفصلة‬ ‫البيئة‬ ‫إما‬‫من‬ ‫نسخة‬ ‫تأخذ‬ ‫وإنما‬ ‫البيانات‬ ‫بقاعدة‬ ‫دائم‬ ‫اتصال‬ ‫على‬ ‫ليست‬ ‫أي‬ ‫ذلك‬ ‫عكس‬ ‫فهي‬ ‫الحاجة‬ ‫تتم‬ ‫ان‬ ‫إلى‬ ‫بها‬ ‫وتشتغل‬ ‫البيانات‬ ‫قاعدة‬‫لالتصال‬ ‫؟؟‬ ‫األداتين‬ ‫مايكروسوفت‬ ‫صممت‬ ‫ولماذا‬ ‫البيئتين‬ ‫من‬ ‫الفائدة‬ ‫ما‬ ‫واستطعنا‬ ‫التقنية‬ ‫هذه‬ ‫أضافت‬ ‫عندما‬ ‫مايكروسوفت‬ ‫إن‬‫أن‬‫الوضع‬ ‫في‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫نتعامل‬ . ‫بيئتين‬ ‫هناك‬ ‫جعل‬ ‫من‬ ‫الفائدة‬ ‫وما‬ ‫لماذا‬ ‫لك‬ ‫سأشرح‬ ً‫ا‬‫جد‬ ‫كبيرة‬ ‫خدمة‬ ‫المنفصل‬ ‫إننا‬‫ويستخدمها‬ ‫واحدة‬ ‫بيانات‬ ‫وقاعدة‬ ‫محلي‬ ‫سرفر‬ ‫مع‬ ‫نتعامل‬ ‫نكون‬ ‫عندما‬ ‫المتصلة‬ ‫البيئة‬ ‫نختار‬ ‫المتصل‬ ‫الوضع‬ ‫يكون‬ ‫وهنا‬ ‫واحد‬ ‫مستخدم‬‫أفضل‬‫لالتصال‬‫لكن‬‫إن‬‫هنا‬ ‫كان‬‫ألكثر‬ ‫تتاح‬ ‫شبكات‬ ‫ك‬ ‫على‬ ‫بها‬ ‫تقوم‬ ‫الذي‬ ‫التعديالت‬ ‫كل‬ ‫المنفصل‬ ‫الوضع‬ ‫في‬ ‫انه‬ ‫أي‬ ‫البيانات‬ ‫قاعدة‬ ‫نفس‬ ‫على‬ ‫مستخدم‬ ‫من‬ ‫الوقت‬ ‫وعند‬ ‫البيانات‬ ‫قاعدة‬ ‫وليس‬ ‫برنامجك‬ ‫داخل‬ ‫مؤقت‬ ‫وهمي‬ ‫جدول‬ ‫على‬ ‫تحفظ‬ ‫البيانات‬ ‫قاعدة‬ ‫حفظها‬ ‫يتم‬ ‫الالزم‬‫إلى‬‫البيانات‬ ‫قاعدة‬ ‫البيئات‬ ‫اختالف‬
  • 17. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 07 ‫البيئة‬‫المنفصلة‬ ‫سواء‬ ‫سنحتاجها‬ ‫الذي‬ ‫المفاهيم‬ ‫بعض‬ ‫إلى‬ ‫لنتعرف‬ ‫بسيطة‬ ‫بجولة‬ ‫سنقوم‬ ‫المنفصلة‬ ‫البيئة‬ ‫تطبيقات‬ ‫في‬ ‫ندخل‬ ‫ان‬ ‫قبل‬ ‫الـ‬ ‫تقنية‬ ‫في‬ ‫تدخل‬ ‫التي‬ ‫المفاهيم‬ ‫بعض‬ ‫وسأذكر‬ ‫المنفصلة‬ ‫او‬ ‫المتصلة‬ ‫البيئة‬ ‫في‬ ‫نتعامل‬ ‫كنا‬ado.net. -( ‫البيانات‬ ‫مجموعة‬Data set) ‫األنظمة‬ ‫من‬ ‫مجموعة‬ ‫هي‬. ‫بإدارتهها‬ ‫وتسهمح‬ ‫الهذاكرة‬ ‫فهي‬ ‫البيانهات‬ ‫فيها‬ ‫تخزن‬ ‫البرمجية‬‫أيضها‬ ‫وربهط‬ ‫جهداول‬ ‫إنشهاء‬ ‫مهن‬ ‫تمكننها‬ ‫الهذاكرة‬ ‫فهي‬ ‫موجهودة‬ ‫صهغيرة‬ ‫بيانهات‬ ‫قاعدة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ . ‫محدد‬ ‫بيانات‬ ‫مصدر‬ ‫على‬ ‫تعتمد‬ ‫ال‬ ‫وهي‬ ‫بعالقات‬ ‫الجداول‬ ‫هذه‬ ‫الـ‬ ‫مكونات‬ ‫بعض‬ ‫ومن‬Data set ‫البيانات‬ ‫جدول‬ ‫الفئة‬Data Table: ‫في‬ ‫هيكله‬ ‫ببناء‬ ‫تقوم‬ ‫أن‬ ‫إما‬ ‫لجدول‬ ‫تمثيل‬ ‫عن‬ ‫عبارة‬Dataset‫بيانهات‬ ‫مصهدر‬ ‫من‬ ‫تأخذه‬ ‫أو‬‫ويمكهن‬ ‫تحتوي‬ ‫أن‬Dataset. ‫الجداول‬ ‫من‬ ‫محدد‬ ‫غير‬ ‫عدد‬ ‫على‬ ‫البيانات‬ ‫أعمدة‬ ‫الفئة‬Data Column: .‫األعمدة‬ ‫مواصفات‬ ‫من‬ ... ‫الخ‬ ‫وطول‬ ‫واسم‬ ‫نوع‬ ‫له‬ ‫العمود‬ ‫هذا‬ ‫جدول‬ ‫داخل‬ ‫لعمود‬ ‫تمثيل‬ ‫عن‬ ‫عبارة‬ ‫البيانات‬ ‫صفوف‬ ‫الفئة‬Data Row: ‫الفئة‬ ‫في‬ ‫سجل‬ ‫الفئة‬ ‫هذا‬ ‫يمثل‬Data Table‫طريقته‬ ‫تؤمن‬ ‫حيث‬Item. ‫حقوله‬ ‫قيم‬ ‫الى‬ ‫الوصول‬ ‫األعمدة‬ ‫قيود‬ ‫الفئة‬Data Constariat: ‫مثل‬ ) ‫األعمدة‬ ‫داخل‬ ‫البيانات‬ ‫بهيئة‬ ‫تتحكم‬ ( ‫األعمدة‬ ‫على‬ ‫توضع‬ ‫قيود‬ (Primary , Foreign , NULL , Constariat , Unique) ‫عالقات‬ ‫الفئة‬DataRelations: . ‫الجداول‬ ‫بين‬ ‫العالقات‬ ) ‫تحديد‬ ( ‫إنشاء‬ ‫خالله‬ ‫من‬ ‫نستطيع‬ ‫مستعرضات‬ ‫الفئة‬Data View: . ‫الكائن‬ ‫هذا‬ ‫خالل‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫جدول‬ ‫على‬ ‫يحتوي‬ ‫مستعرض‬ ‫إنشاء‬ : ‫بعد‬ ‫فيما‬ ‫أو‬ ‫هذا‬ ‫درسنا‬ ‫في‬ ‫سواء‬ ‫سنحتاجها‬ ‫الذي‬ ‫والكائنات‬ ‫الخصائص‬ ‫بعض‬ ‫هنا‬ ‫وسنذكر‬ ‫الخاصية‬Position: ‫نوع‬ ‫من‬ ‫تعريفة‬ ‫تم‬ ‫الذي‬ ‫المتغير‬ ‫تتبع‬ ‫وهي‬ ‫السجالت‬ ‫بين‬ ‫للتنقل‬ ‫نستخدمها‬BindingManagerBase . ‫الخاصية‬DataBinding: . ‫فيه‬ ‫محتواه‬ ‫وعرض‬ ‫جدول‬ ‫في‬ ‫عمود‬ ‫مع‬ ‫كائن‬ ‫لربط‬ ‫الخاصية‬ ‫هذه‬ ‫تستخدم‬ ‫الخاصية‬BindingContex: ‫هـ‬‫ه‬‫ال‬ ‫هع‬‫ه‬‫م‬ ‫هة‬‫ه‬‫المرتبط‬ ‫هات‬‫ه‬‫الكائن‬ ‫هربط‬‫ه‬‫ل‬ ‫هتخدم‬‫ه‬‫يس‬Dataset‫هق‬‫ه‬‫طري‬ ‫هن‬‫ه‬‫ع‬ ‫هدول‬‫ه‬‫الج‬ ‫هجالت‬‫ه‬‫بس‬ ‫هتحكم‬‫ه‬‫وال‬ ‫هدول‬‫ه‬‫والج‬ ‫نوع‬ ‫من‬ ‫متغير‬ ‫استخدام‬BindingManagerBase. BindingManagerBase: ‫هل‬‫ه‬‫داخ‬ ‫هة‬‫ه‬‫بالحرك‬ ‫هالتحكم‬‫ه‬‫ب‬ ‫هوم‬‫ه‬‫ويق‬ ‫هات‬‫ه‬‫البيان‬ ‫هة‬‫ه‬‫ومجموع‬ ‫هربط‬‫ه‬‫ال‬ ‫هات‬‫ه‬‫كائن‬ ‫هين‬‫ه‬‫ب‬ ‫هة‬‫ه‬‫العالق‬ ‫هيق‬‫ه‬‫بتنس‬ ‫هوم‬‫ه‬‫يق‬ ‫هائن‬‫ه‬‫ك‬ ‫هو‬‫ه‬‫وه‬ . ‫السجالت‬ CurrencyManager: ‫عمل‬ ‫بنفس‬ ‫يقوم‬ ‫كائن‬ ‫وهو‬BindingManagerBase. ‫الخاصية‬displayMember‫لـ‬ ‫التابعة‬ComboBox: . ‫الجدول‬ ‫من‬ ‫بحقل‬ ‫البيانات‬ ‫قاعدة‬ ‫ربط‬ ‫في‬ ‫تستخدم‬ ‫المنفصلة‬ ‫البيئة‬
  • 18. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 08 ‫الخاصية‬ValueMember‫لـ‬ ‫التابعة‬ComboBox: ‫قيمة‬ ‫وهي‬DisplayMember. ‫البيانات‬ ‫قاعدة‬ ‫إلى‬ ‫إرجاعها‬ ‫يتم‬ ‫سوف‬ ‫التي‬ ‫الخاصية‬DataSource‫لـ‬ ‫التابعة‬ComboBox: . ‫البيانات‬ ‫قاعدة‬ ‫اسم‬ ‫بتحديد‬ ‫تقوم‬ ‫طريقة‬ ‫وهي‬ ‫األمر‬ ‫باني‬ ‫كائن‬CommandBuilder: ‫الـ‬ ‫قبل‬ ‫من‬ ‫يستخدم‬ ‫كائن‬ ‫وهو‬DataAdepter‫قاعهدة‬ ‫فهي‬ ‫السهجالت‬ ‫وحهذف‬ ‫وتحهديث‬ ‫وإدخال‬ ‫الختيار‬ . ‫البيانات‬ ‫الخاصية‬InsertCommand‫لـ‬ ‫التابعة‬DataAdapter: ‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬ ‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫إلضافة‬Dataset. ‫الخاصية‬DeleteCommand‫لـ‬ ‫التابعة‬DataAdapter: ‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬ ‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫لحذف‬Dataset. ‫الخاصية‬UpdateCommand‫لـ‬ ‫التابعة‬DataAdapter: ‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬ ‫الـ‬DataAdapter‫البيانا‬ ‫لتعديل‬‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫ت‬Dataset. ‫الخاصية‬SelectCommand‫لـ‬ ‫التابعة‬DataAdapter: ‫بالفئة‬ ‫خاصية‬ ‫وهي‬DataAdapter‫للفئهة‬ ‫كمرجع‬ ‫وتعتبر‬CommandBuilder‫يسهتخدمها‬ ‫والتهي‬ ‫الـ‬DataAdapter‫الـ‬ ‫وفئة‬ ‫البيانات‬ ‫قاعدة‬ ‫بين‬ ‫البيانات‬ ‫اختيار‬ ‫أو‬ ‫الستعالم‬Dataset. ‫الوظيف‬‫ة‬GetInsertCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder: ‫ههة‬‫ه‬‫للفئ‬ ‫ههية‬‫ه‬‫خاص‬ ‫ههن‬‫ه‬‫ع‬ ‫ههارة‬‫ه‬‫عب‬ ‫ههي‬‫ه‬‫وه‬CommandBuilder‫ههـ‬‫ه‬‫ال‬ ‫ههن‬‫ه‬‫م‬ ‫ههدة‬‫ه‬‫الجدي‬ ‫ههجالت‬‫ه‬‫الس‬ ‫ههافة‬‫ه‬‫بإض‬ ‫ههوم‬‫ه‬‫تق‬ Dataset‫الـ‬ ‫على‬ ‫وإسقاطها‬DataAdapter) ‫مرجع‬ ( ‫الخاصية‬ ‫طريقة‬ ‫عن‬InsertCommand . ‫الوظيفة‬GetDeleteCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder: ‫ههة‬‫ه‬‫للفئ‬ ‫ههية‬‫ه‬‫خاص‬ ‫ههن‬‫ه‬‫ع‬ ‫ههارة‬‫ه‬‫عب‬ ‫ههي‬‫ه‬‫وه‬CommandBuilder‫ههة‬‫ه‬‫المحذوف‬ ‫ههجالت‬‫ه‬‫الس‬ ‫ههذف‬‫ه‬‫بح‬ ‫ههوم‬‫ه‬‫تق‬‫ههـ‬‫ه‬‫ال‬ ‫ههن‬‫ه‬‫م‬ Dataset‫ههههههههـ‬‫ه‬‫ال‬ ‫ههههههههى‬‫ه‬‫عل‬ ‫ههههههههقاطها‬‫ه‬‫وإس‬DataAdapter) ‫ههههههههع‬‫ه‬‫مرج‬ ( ‫ههههههههية‬‫ه‬‫الخاص‬ ‫ههههههههة‬‫ه‬‫طريق‬ ‫ههههههههن‬‫ه‬‫ع‬ DeleteCommand. ‫الوظيفة‬GetUpdateCommand‫األمر‬ ‫لباني‬ ‫التابعة‬CommandBuilder: ‫للفئهة‬ ‫خاصهية‬ ‫عهن‬ ‫عبارة‬ ‫وهي‬CommandBuilder‫تعهديلها‬ ‫تهم‬ ‫التهي‬ ‫السهجالت‬ ‫بتعهديل‬ ‫تقهوم‬‫الهـ‬ ‫مهن‬ Dataset‫ههههههههـ‬‫ه‬‫ال‬ ‫ههههههههى‬‫ه‬‫عل‬ ‫ههههههههقاطها‬‫ه‬‫وإس‬DataAdapter) ‫ههههههههع‬‫ه‬‫مرج‬ ( ‫ههههههههية‬‫ه‬‫الخاص‬ ‫ههههههههة‬‫ه‬‫طريق‬ ‫ههههههههن‬‫ه‬‫ع‬ UpdateCommand. ‫هاس‬‫ه‬‫االلتب‬ ‫هيزيل‬‫ه‬‫س‬ ‫هالتطبيق‬‫ه‬‫فب‬ ‫هد‬‫ه‬‫جي‬ ‫هكل‬‫ه‬‫بش‬ ‫هابق‬‫ه‬‫الس‬ ‫هتوعبوا‬‫ه‬‫تس‬ ‫هم‬‫ه‬‫ل‬ ‫إن‬ ‫هى‬‫ه‬‫وحت‬ ‫هحة‬‫ه‬‫واض‬ ‫هور‬‫ه‬‫األم‬ ‫أن‬ ‫هد‬‫ه‬‫اعتق‬ ‫وتص‬ ‫والغموض‬‫سهتوديو‬ ‫الفيجوال‬ ‫برنامج‬ ‫إلى‬ ‫أخرى‬ ‫مرة‬ ‫نعود‬ ‫للتطبيق‬ ‫بنا‬ ‫هيا‬ ‫أكثر‬ ‫جلية‬ ‫األمور‬ ‫بح‬ : ‫الواجهة‬ ‫هذه‬ ‫ونصمم‬ ‫جديد‬ ‫مشروع‬ ‫ننشئ‬ ‫المنفصلة‬ ‫البيئة‬
  • 19. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 09 : ‫الواجهة‬ ‫شرح‬ . ‫السابق‬ ‫التطبيق‬ ‫في‬ ‫كما‬ ‫هي‬ ‫الشمال‬ ‫جهة‬ ‫على‬ ‫النصية‬ ‫الصناديق‬ ‫أداة‬ ‫هي‬ ‫اليمين‬ ‫جهة‬ ‫في‬dataGridView‫وأسميناها‬ ‫البيانات‬ ‫لعرض‬ ‫أداة‬ dataGridView1‫بالرقم‬ ‫بالصورة‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬11. ‫األولى‬ ‫األزرار‬ ‫مجموعة‬ ‫هي‬( ‫من‬ ‫المرقمة‬ ‫األدوات‬1-4( ‫أزرار‬ ‫هي‬ )button)‫بين‬ ‫التنقل‬ ‫بعمليات‬ ‫للقيام‬ ‫وهي‬ ( ‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫بيانات‬groupBox) ‫و‬‫أسميناها‬groupBox1‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬12. ‫الثانية‬ ‫األزرار‬ ‫مجموعة‬ ( ‫من‬ ‫المرقمة‬ ‫األدوات‬ ‫هي‬5-7( ‫أزرار‬ ‫هي‬ )button‫اإلضافة‬ ‫بعمليات‬ ‫للقيام‬ ‫وهي‬ ) ‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫لبيانات‬ ‫والحذف‬ ‫والتعديل‬ (groupBox‫وأسميناها‬ )groupBox2‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬13. ‫الثالثة‬ ‫األزرار‬ ‫مجموعة‬ (‫أرقامها‬ ‫التي‬ ‫األداتين‬ ‫هي‬8‫و‬9(‫أزرار‬ ‫)هي‬button‫اإلضافة‬ ‫بتأكيدعمليات‬ ‫للقيام‬ ‫)وهي‬ ‫أداة‬ ‫داخل‬ ‫األزرار‬ ‫هذه‬ ‫وضعناها‬ ‫نحن‬ ً‫ا‬‫وأيض‬ ‫البيانات‬ ‫قاعدة‬ ‫لبيانات‬ ‫والحذف‬ ‫والتعديل‬ (groupBox‫وأسميناها‬ )groupBox3‫بالرقم‬ ‫الصورة‬ ‫في‬ ‫معنا‬ ‫الظاهرة‬ ‫وهي‬14. ( ‫رقم‬ ‫الزر‬10. ‫البرنامج‬ ‫بإغالق‬ ‫يقوم‬ ‫الذي‬ ‫الزر‬ ‫وهو‬ ) ‫المنفصلة‬ ‫البيئة‬
  • 20. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 21 ‫؟‬ ‫به‬ ‫نقوم‬ ‫ما‬ ‫أول‬ ‫ما‬ ‫س‬ ‫به‬ ‫القيام‬ ‫علينا‬ ‫يجب‬ ‫ما‬ ‫أول‬ ‫أن‬ ‫شك‬ ‫ال‬‫التي‬ ‫المكتبة‬ ‫نحتاج‬ ‫وهنا‬ ‫نحتاجها‬ ‫التي‬ ‫المكتبة‬ ‫تعريف‬ ‫هو‬ ‫وال‬ ‫أكسس‬ ‫البيانات‬ ‫قاعدة‬ ‫تخص‬‫ت‬‫هي‬ ‫ي‬ using System.Data.OleDb; ‫التالي‬ ‫ونكتب‬ ‫العام‬ ‫القسم‬ ‫في‬ ‫الكائنات‬ ‫واشتقاق‬ ‫المتغيرات‬ ‫تعريف‬ ‫ونبدأ‬ public partial class Form1 : Form { ‫نقوم‬‫بتعريف‬‫جملة‬‫االتصال‬‫كما‬‫سبق‬‫ذكره‬‫ا‬‫ل‬‫قب‬// OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lesson7.accdb"); ‫تعريف‬‫كائن‬‫من‬‫فئة‬‫منظم‬‫البيانات‬// OleDbDataAdapter da; ‫تعريف‬‫كائن‬‫من‬‫فئة‬‫جدول‬‫البيانات‬// DataTable dt = new DataTable(); ‫تعريف‬‫كائن‬‫من‬‫فئة‬‫العلقات‬// BindingManagerBase bmb; ‫تعريف‬‫كائن‬‫من‬‫فئة‬‫باني‬‫األوامر‬// OleDbCommandBuilder cmdb; public Form1() { InitializeComponent(); } ( ‫الحاويات‬ ‫داخل‬ ‫األدوات‬ ‫بعض‬ ‫وضعنا‬ ‫لماذا‬ ً‫ال‬‫سؤا‬ ‫سأسألكم‬groupBox‫؟؟‬ ) ‫األزرار‬ ‫فإن‬ ‫البرنامج‬ ‫اشتغال‬ ‫عند‬ ‫نريد‬ ‫أننا‬ ‫هو‬ ‫ألجله‬ ‫وضعناها‬ ‫الذي‬ ‫الغرض‬ ‫ولكن‬ ‫يمكن‬ ‫أجل‬ ! ‫صحيح‬ ‫للتنظيم‬ ( ‫رقم‬8‫و‬9‫العمليات‬ ‫بتأكيد‬ ‫يقومان‬ ‫الذي‬ )‫ان‬ ‫نريد‬ ‫ال‬‫إحدى‬ ‫المستخدم‬ ‫اختيار‬ ‫عند‬ ‫اال‬ ‫المستخدم‬ ‫على‬ ‫يظهرا‬ ‫(اإلضافة‬ ‫العمليات‬–‫التعديل‬–‫الوضع‬ ‫يعود‬ ‫الزرين‬ ‫أحد‬ ‫على‬ ‫الضغط‬ ‫وعند‬ ‫األدوات‬ ‫بقية‬ ‫وتختفي‬ ) ‫الحذف‬ ‫الخاصية‬ ‫سنجعل‬ ‫ولهذا‬ ‫السابقة‬ ‫للحالة‬Enabled‫لألداة‬groupBox3=False‫داخل‬ ‫الدالة‬ ‫هذه‬ ‫ونكتب‬ : ‫الحاجة‬ ‫عند‬ ‫سنستخدمها‬ ‫والتي‬ ‫البرنامج‬ void toolsShow() { groupBox1.Enabled = !groupBox1.Enabled; groupBox2.Enabled = !groupBox2.Enabled; groupBox3.Enabled = !groupBox3.Enabled; } ‫وه‬. ‫عليه‬ ‫هي‬ ‫ما‬ ‫على‬ ‫الحاويات‬ ‫تشغيل‬ ‫حالة‬ ‫بقلب‬ ‫تقوم‬ ‫استدعاءها‬ ‫عند‬ ‫الدالة‬ ‫ذه‬ ‫المنفصلة‬ ‫البيئة‬
  • 21. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 20 ‫على‬ ‫بالضغط‬ ‫الواجهة‬ ‫تصميم‬ ‫واجهة‬ ‫إلى‬ ‫نعود‬SHIFT+F7‫نكتب‬ ‫اللود‬ ‫حدث‬ ‫في‬ ‫مرتين‬ ‫الفورم‬ ‫على‬ ‫ونضغط‬ : ‫التالي‬ ‫الكود‬ private void Form1_Load(object sender, EventArgs e) { ‫إعطاء‬‫كائن‬‫منظم‬‫البيانات‬‫جملة‬‫اإلس‬‫كيو‬‫إل‬‫ا‬‫ا‬‫وإيض‬‫مفتاح‬‫اإلتصال‬// da = new OleDbDataAdapter("select * from friends", con); ‫استخدام‬‫الدالة‬‫فيل‬‫من‬‫دوال‬‫كائن‬‫منظم‬‫البيانات‬‫لتعبئة‬‫متغير‬‫جدول‬‫البيانات‬// ‫أي‬‫أنه‬‫بعد‬‫تنفيذ‬‫الكود‬‫السابق‬‫يكون‬‫منظم‬‫البيانات‬‫كأنه‬‫يحمل‬// ‫البيانات‬‫الراجعة‬‫من‬‫قاعدة‬‫البيانات‬‫ونطلب‬‫منها‬‫هنا‬‫تعبئتها‬‫للجدول‬‫ويمكننا‬‫فعل‬‫التالي‬‫باألمر‬// //dt.load(da); ‫أي‬‫أننا‬‫نجعل‬‫كائن‬‫جدول‬‫البيانات‬‫يقوم‬‫بتحميل‬‫البيانات‬‫من‬‫منظم‬‫البيانات‬// da.Fill(dt); ‫وهنا‬‫نقوم‬‫بربط‬‫خاصية‬‫من‬‫خواص‬‫األداة‬‫بحقل‬‫معين‬‫من‬‫حقول‬‫الجدول‬// ‫بإستخدام‬‫خاصية‬DataBindings‫وتستقبل‬‫القيم‬ ‫بعض‬‫كباراميترات‬// ‫الباراميتر‬‫األول‬‫خاصية‬‫األداة‬‫التي‬‫سنضيف‬‫اليها‬‫بيانات‬‫الحق‬‫وهنا‬‫استخدمنا‬text// ‫والثاني‬‫اسم‬‫الجدول‬‫او‬‫مصدر‬‫البيانات‬‫والذي‬‫هو‬‫عندنا‬dt// ‫والثالث‬‫هو‬‫اسم‬‫العمود‬‫في‬‫الجدول‬‫المحدد‬‫والذي‬‫هو‬‫عندنا‬fri_no// ‫وهذا‬‫يعني‬‫أننا‬‫قمنا‬‫بربط‬‫خاصية‬‫النص‬‫لصندوق‬‫النص‬‫هذا‬‫بالحقل‬‫المحدد‬‫في‬‫العمود‬‫رقم‬‫الصديق‬‫بالجدول‬ dt// txtfri_no.DataBindings.Add("text", dt, "fri_no"); ‫كما‬‫سبق‬‫إال‬‫اننا‬‫هنا‬‫ربطناه‬‫بإسم‬‫الصديق‬// txtfri_name.DataBindings.Add("text", dt, "fri_name"); ‫وهذا‬‫ربطناه‬‫بالمدينة‬// txtcity.DataBindings.Add("text", dt, "city"); ‫وهذا‬‫برقم‬‫الجوال‬// txtmobile.DataBindings.Add("text", dt, "mobile"); ‫وهذا‬‫بالوظيفة‬// txtjob.DataBindings.Add("text", dt, "job"); ‫قمنا‬‫بالربط‬‫بين‬‫الـ‬bmb‫و‬‫الـ‬dt// ‫او‬‫نستطيع‬‫القول‬‫اننا‬‫حددنا‬‫للـ‬bmb‫الكائن‬‫الذي‬‫عليها‬‫التعامل‬‫معه‬// bmb = this.BindingContext[dt]; ‫قمنا‬‫بتعبئة‬‫أداة‬‫عرض‬‫البيانات‬‫ببيانات‬‫الجدول‬dt// dataGridView1.DataSource = dt; } !!! ‫الجدول‬ ‫بيانات‬ ‫لنا‬ ‫عرض‬ ‫قد‬ ‫انه‬ ‫لترى‬ ‫البرنامج‬ ‫تشغيل‬ ‫تجرب‬ ‫ان‬ ‫يمكنك‬ ‫األول‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫األول‬ ‫الزر‬ ‫على‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نرجع‬ ‫اآلن‬ ‫و‬ ‫الكود‬ ‫هذا‬ ‫فيه‬ ‫ونكتب‬ private void btnfrist_Click(object sender, EventArgs e) { ‫جعلنا‬‫موقع‬‫الـ‬= bmb0‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫يحتل‬‫الرتبة‬‫صفر‬// bmb.Position = 0; } ‫المنفصلة‬ ‫البيئة‬
  • 22. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 22 ‫التالي‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الثاني‬ ‫الزر‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫واجهة‬ ‫إلى‬ ‫ونرجع‬ ‫الكود‬ ‫هذا‬ ‫ونكتب‬ private void next_Click(object sender, EventArgs e) { ‫زدنا‬‫موقع‬‫الـ‬bmb‫بنسبة‬1‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫ا‬‫ا‬‫حالي‬ ‫المعروض‬ ‫الصديق‬ ‫يلي‬// bmb.Position++; } ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الثالث‬ ‫الزر‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫واجهة‬ ‫إلى‬ ‫ونرجع‬‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫السابق‬ ‫الصديق‬ private void btnprevious_Click(object sender, EventArgs e) { ‫انقصنا‬‫موقع‬‫الـ‬bmb‫بنسبة‬1‫أي‬‫اننا‬‫نخبره‬‫عن‬‫بيانات‬‫الصديق‬‫الذي‬‫ا‬‫ا‬‫حالي‬ ‫المعروض‬ ‫الصديق‬ ‫يسبق‬// bmb.Position--; } ‫إلى‬ ‫نرجع‬‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫األخير‬ ‫الصديق‬ ‫بيانات‬ ‫يعرض‬ ‫والذي‬ ‫الرابع‬ ‫الزر‬ ‫على‬ ‫نضغط‬ ‫التصميم‬ ‫واجهة‬ private void btnlast_Click(object sender, EventArgs e) { ‫جعلنا‬‫موقع‬‫الـ‬bmb=‫بمقدار‬ ‫الجدول‬ ‫صفوف‬ ‫عدد‬ ‫من‬ ‫اقل‬‫ا‬‫ا‬// bmb.Position = dt.Columns.Count - 1; } ‫رقم‬ ‫الزر‬ ‫وفي‬5‫التالي‬ ‫الكود‬ ‫بكتابة‬ ‫نقوم‬ ‫اإلضافة‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬ private void btnAdd_Click(object sender, EventArgs e) { ‫قمنا‬‫بإخبار‬‫المعالج‬‫اننا‬‫نريد‬‫اضافة‬‫بيانات‬‫جديدة‬// bmb.AddNew(); ‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬// toolsShow(); } ‫رقم‬ ‫الزر‬ ‫وفي‬6‫األزرار‬ ‫تشغيل‬ ‫حالة‬ ‫تغيير‬ ‫دالة‬ ‫استدعاء‬ ‫كود‬ ‫إال‬ ‫نكتب‬ ‫ال‬ ‫التعديل‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬ ‫رقم‬ ‫الزر‬ ‫وفي‬7‫ا‬ ‫الكود‬ ‫نكتب‬ ‫الحذف‬ ‫بعملية‬ ‫يقوم‬ ‫والذي‬: ‫لتالي‬ private void btnDel_Click(object sender, EventArgs e) { ‫وهذا‬‫السطر‬‫يقوم‬‫بعرض‬‫رسالة‬‫للمستخدم‬‫تقول‬‫له‬‫هل‬‫انت‬‫متأكد‬‫من‬‫عملية‬‫الحذف‬// ‫فإن‬‫اختار‬‫نعم‬‫تحقق‬‫شرط‬‫وتم‬‫تنفيذ‬‫ماداخل‬‫الحاصرتين‬‫او‬‫باألصح‬‫تم‬‫تنفيذ‬‫جملة‬// If ‫وان‬‫اختار‬‫ال‬‫تم‬‫الخروج‬‫من‬‫الجملة‬‫وعدم‬‫حدوث‬‫اي‬‫تغيير‬// if (MessageBox.Show("‫هل‬ ‫انت‬ ‫متأكد‬ ‫من‬ ‫عملية‬ ‫الحذف‬ ", "‫تأكيد‬ ‫الحذف‬ ", MessageBoxButtons.YesNo) == DialogResult.Yes) { ‫إعطاء‬‫أمر‬‫الحذف‬‫بالدالة‬Removeat‫والتي‬‫تقوم‬‫بالحذف‬‫حسب‬‫الموقع‬‫وتستقبل‬‫الموقع‬‫كباراميتر‬// bmb.RemoveAt(bmb.Position); ‫نعطيه‬‫األمر‬‫بإنهاء‬‫العملية‬‫الحالية‬// bmb.EndCurrentEdit(); ‫حددنا‬‫لباني‬‫األوامر‬‫منظم‬‫البيانات‬‫الذي‬‫عليه‬‫التعامل‬‫معه‬// cmdb = new OleDbCommandBuilder(da); ‫منظم‬‫البيانات‬‫يقوم‬‫بتحديث‬‫البيانات‬‫الذي‬‫في‬‫الـ‬// dt da.Update(dt); } } ‫المنفصلة‬ ‫البيئة‬
  • 23. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 23 ‫رقم‬ ‫للزر‬ ‫ننتقل‬8‫الكود‬ ‫هذا‬ ‫ونكتب‬ ‫العملية‬ ‫تأكيد‬ ‫أو‬ ‫بحفظ‬ ‫يقوم‬ ‫والذي‬ private void btnSave_Click(object sender, EventArgs e) { ‫نعطيه‬‫األمر‬‫بإنهاء‬‫العملية‬‫الحالية‬// bmb.EndCurrentEdit(); ‫حددنا‬‫لباني‬‫األوامر‬‫منظم‬‫البيانات‬‫الذي‬‫عليه‬‫التعامل‬‫معه‬// cmdb = new OleDbCommandBuilder(da); ‫منظم‬‫البيانات‬‫يقوم‬‫بتحديث‬‫البيانات‬‫الذي‬‫في‬‫الـ‬// dt da.Update(dt); ‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬// toolsShow(); } ‫رقم‬ ‫للزر‬ ‫ننتقل‬9‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫العملية‬ ‫بإلغاء‬ ‫يقوم‬ ‫والذي‬ private void btnCancel_Click(object sender, EventArgs e) { ‫نعطيه‬‫األمر‬‫بإلغاء‬‫العملية‬‫بإستخدام‬‫الدالة‬// CancelCurrentEdit(); bmb.CancelCurrentEdit(); ‫استدعينا‬‫الدالة‬‫التي‬‫قمنا‬‫بكتابتها‬‫لتغيير‬‫حالة‬‫تشغيل‬‫األزرار‬// toolsShow(); } ‫تعرفون‬ ‫كما‬ ‫فقط‬ ‫البرنامج‬ ‫إغالق‬ ‫أمر‬ ‫فهو‬ ‫اإلغالق‬ ‫زر‬ ‫في‬ ‫أما‬ private void btnClose_Click(object sender, EventArgs e) { this.Close(); } ‫المنفصلة‬ ‫البيئة‬
  • 24. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 24 ‫الوضع‬ ‫في‬ ‫برنامجك‬ ‫في‬ ‫األدوات‬ ‫وخواص‬ ‫البيانات‬ ‫قاعدة‬ ‫بيانات‬ ‫مابين‬ ‫الربط‬ ‫يوضح‬ ‫هو‬ ‫السابق‬ ‫المثال‬ ‫ادابتر‬ ‫الداتا‬ ‫نستخدم‬ ‫المنفصلة‬ ‫البيئة‬ ‫في‬ ‫أننا‬ ً‫ا‬‫جلي‬ ‫األمر‬ ‫أن‬ ‫اعتقد‬ ‫متصل‬ ‫الغير‬‫غير‬ ‫يجعلنا‬ ‫الذي‬ ‫وهو‬ ‫ال‬ ‫لم‬ ‫تساءل‬ ‫قد‬ ‫منكم‬ ‫العديد‬ ‫أن‬ ‫فيبدو‬ ً‫ا‬‫ضروري‬ ً‫ال‬‫مثا‬ ‫لكم‬ ‫أضيف‬ ‫أن‬ ‫أريد‬ ‫المهم‬ . ‫البيانات‬ ‫بقاعدة‬ ‫متصلين‬ ‫قائمة‬ ‫في‬ ‫بياناته‬ ‫عرض‬ ‫المراد‬ ‫للصديق‬ ‫المستخدم‬ ‫اختيار‬ ‫طريقة‬ ‫نجعل‬‫بوكس‬ ‫الكومبو‬ ‫أو‬ ‫بوكس‬ ‫الليست‬ ‫م‬ ‫هي‬ ‫ذلك‬ ‫لتعلم‬ ‫الملحة‬ ‫الحاجة‬ ‫بل‬ ‫التساؤل‬ ‫ولهذا‬‫بلمحة‬ ‫الموضوع‬ ‫هذا‬ ‫على‬ ‫بكم‬ ‫أمر‬ ‫أن‬ ‫أصر‬ ‫جعلتني‬ ‫ا‬ ‫بنا‬ ‫هيا‬ ‫عليكم‬ ‫أطيل‬ ‫ال‬ ‫بأنفسكم‬ ‫تطوروها‬ ‫وبعدئذ‬ ‫أساسها‬ ‫وتفهموا‬ ‫الموضوع‬ ‫هذا‬ ‫عن‬ ‫فكرة‬ ‫لتأخذوا‬ ‫بسيطة‬ . ‫المثال‬ ‫إلى‬ ‫نريد‬‫إن‬‫نصمم‬‫برنامج‬‫فيه‬‫كومبو‬‫بوكس‬‫يعرض‬‫لنا‬‫أسماء‬‫األصدقاء‬‫وعند‬‫اختيارنا‬‫ألحد‬‫األصدقاء‬ ‫يعرض‬‫بياناته‬‫في‬‫صناديق‬‫نصية‬. ‫ستوديو‬ ‫الفيجوال‬ ‫برنامج‬ ‫في‬ ‫الواجهة‬ ‫هذه‬ ‫نصمم‬ ‫الخاصية‬ ‫وفي‬ ‫بوكس‬ ‫الكومبو‬ ‫الى‬ ‫نذهب‬DropDownStyle‫نجعلها‬DropDownList‫وذلك‬ . ‫عليها‬ ‫المعروضة‬ ‫البيانات‬ ‫على‬ ‫التعديل‬ ‫لمنع‬ ‫باألصح‬ ‫أو‬ ‫فقط‬ ‫للقراءة‬ ‫لجعلها‬ ‫فضاء‬ ‫كتابة‬ ‫وبعد‬ ‫الكود‬ ‫نافذة‬ ‫إلى‬ ‫ندخل‬ ‫ثم‬‫المتغيرات‬ ‫تعريف‬ ‫إلى‬ ‫ننزل‬ ‫البيانات‬ ‫بقاعدة‬ ‫الخاص‬ ‫األسماء‬ : ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫العام‬ ‫الجزء‬ ‫في‬ ‫الكائنات‬ ‫واشتقاق‬ ‫نقوم‬‫بتعريف‬‫جملة‬‫االتصال‬‫كما‬‫سبق‬‫ذكره‬‫ا‬‫ل‬‫قب‬// OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=lesson7.accdb"); ‫كائن‬ ‫إشتقاق‬‫فئة‬‫منظم‬‫أو‬‫جالب‬‫البيانات‬// OleDbDataAdapter da; ‫تعريف‬‫كائن‬‫من‬‫فئة‬‫جدول‬‫البيانات‬‫ليستقبل‬‫البيانات‬‫الراجعة‬// ‫وهذا‬‫الذي‬‫سنستخدمه‬‫في‬‫تعبئة‬‫الكومبو‬‫بوكس‬// DataTable dt = new DataTable(); ‫اشتقاق‬‫كائن‬‫آخر‬‫من‬‫فئة‬‫جدول‬‫البيانات‬‫ليستقبل‬‫البيانات‬‫الراجعة‬// ‫وهذا‬‫الذي‬‫سنستخدمة‬‫في‬‫تعبئة‬‫الصناديق‬‫النصية‬// ‫ألن‬‫هذا‬‫الجدول‬‫سيحمل‬‫بيانات‬‫سطر‬‫واحد‬‫أما‬‫السابق‬‫فهو‬‫يحمل‬‫بيانات‬‫عمود‬// DataTable dt2 = new DataTable(); public Form1() { InitializeComponent(); } ‫المنفصلة‬ ‫في‬ ‫مقتطفات‬
  • 25. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 25 ‫اللود‬ ‫حدث‬ ‫إلى‬ ‫لننتقل‬ ‫مرتين‬ ‫الفورم‬ ‫على‬ ‫ونضغط‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نعود‬ ‫اآلن‬ ً‫ا‬‫واضح‬ ‫الشرح‬ ‫أن‬ ‫أظن‬ : ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫الفورم‬ ‫تحميل‬ ‫حدث‬ ‫أي‬ private void Form1_Load(object sender, EventArgs e) { ‫إعطاء‬‫كائن‬‫منظم‬‫البيانات‬‫أو‬‫جالبها‬‫جملة‬‫اإلس‬‫كيو‬‫إل‬‫ا‬‫ا‬‫وإيض‬‫مفتاح‬‫اإلتصال‬// da = new OleDbDataAdapter("select * from friends", con); /* ‫استخدام‬‫الدالة‬‫فيل‬‫من‬‫دوال‬‫كائن‬‫منظم‬‫البيانات‬‫لتعبئة‬‫متغير‬‫جدول‬‫البيانات‬ ‫أي‬‫أنه‬‫بعد‬‫تنفيذ‬‫الكود‬‫السابق‬‫يكون‬‫منظم‬‫البيانات‬‫كأنه‬‫يحمل‬ ‫البيانات‬‫الراجعة‬‫من‬‫قاعدة‬‫البيانات‬‫ونطلب‬‫منها‬‫هنا‬‫تعبئتها‬‫للجدول‬‫ويمكننا‬‫فعل‬‫التالي‬‫باألمر‬ dt.load(da); ‫أي‬‫أننا‬‫نجعل‬‫كائن‬‫جدول‬‫البيانات‬‫يقوم‬‫بتحميل‬‫البيانات‬‫من‬‫جالب‬‫البيانات‬ */ da.Fill(dt); ‫ثم‬‫نحدد‬‫مصدر‬‫بيانات‬‫الكومبو‬‫بوكس‬‫أنها‬‫من‬‫الجدول‬// comboBox1.DataSource = dt; ‫نحدد‬‫الحقل‬‫الذي‬‫نريد‬‫إظهاره‬‫في‬‫الكومبو‬‫بوكس‬// ‫وهنا‬‫حددنا‬‫الحقل‬‫رقم‬‫الصديق‬‫بأستخدام‬‫خاصية‬DisplayMember‫للكومبو‬‫بوكس‬// comboBox1.DisplayMember = "fri_name"; ‫نكتب‬‫اسم‬‫الحقل‬‫صاحب‬‫المفتاح‬‫الرئيسي‬‫في‬‫جدول‬‫األصدقاء‬‫في‬‫الخاصية‬ValueMember‫للكومبو‬‫بوكس‬ // comboBox1.ValueMember = "fri_no"; } .‫وسترى‬ ‫التنفيذ‬ ‫جرب‬ ! ‫األصدقاء‬ ‫لجميع‬ ‫الصديق‬ ‫اسم‬ ‫العمود‬ ‫ببيانات‬ ‫بوكس‬ ‫الكومبو‬ ‫حملنا‬ ‫قد‬ ‫نحن‬ ‫اآلن‬ ‫الى‬ ‫لندخل‬ ‫نقرتين‬ ‫بوكس‬ ‫الكومبو‬ ‫على‬ ‫وننقر‬ ‫التصميم‬ ‫نافذة‬ ‫إلى‬ ‫نعود‬‫حدث‬SelectedIndexChanged : ‫التالي‬ ‫الكود‬ ‫ونكتب‬ ‫لها‬ private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try { dt2.Clear(); da = new OleDbDataAdapter("select * from friends where fri_name='" +comboBox1.Text + "'", con); ‫الشك‬‫اننا‬‫نعرف‬‫ان‬‫اإلستعلم‬‫السابق‬‫يرجع‬‫لنا‬‫سطر‬‫من‬‫البيانات‬// ‫وهنا‬‫قمنا‬‫بتعبئة‬‫الـ‬dt2‫ببيانات‬‫هذا‬‫السطر‬// da.Fill(dt2); /* ‫اآلن‬‫نأتي‬‫ألظهار‬‫بيانات‬‫السطر‬‫الذي‬‫في‬‫الجدول‬‫في‬‫الصناديق‬‫النصية‬ ‫نحدد‬‫الجدول‬‫ثم‬‫نستخدم‬‫دالة‬Rows‫وهي‬‫دالة‬‫تحدد‬‫الصف‬‫وتستقبل‬‫رتبة‬‫السطر‬ ‫ورتبة‬‫السطر‬‫عندنا‬‫هو‬‫الصفر‬‫إلن‬‫اإلستعلم‬‫السابق‬‫يجلب‬‫سطر‬‫واحد‬‫فقط‬ ‫وتستقبل‬‫ا‬‫ا‬‫إيض‬‫رتبة‬‫الحقل‬‫ورتبة‬‫الحقل‬‫في‬‫رقم‬‫الصديق‬‫هي‬1 ‫ولكن‬‫لتفادي‬‫األخطاء‬‫نكتب‬‫اسم‬‫الحقل‬‫أفضل‬‫من‬‫رتبته‬ ‫وعلى‬‫نفس‬‫الطريقة‬‫نكمل‬‫باقي‬‫الصناديق‬‫النصية‬ */ txt_fri_no.Text = dt2.Rows[0]["fri_no"].ToString(); txt_fri_name.Text = dt2.Rows[0]["fri_name"].ToString(); txt_city.Text = dt2.Rows[0]["city"].ToString(); txt_mobile.Text = dt2.Rows[0]["mobile"].ToString(); txt_job.Text = dt2.Rows[0]["job"].ToString(); } catch { return; } } ‫المنفصلة‬ ‫في‬ ‫مقتطفات‬
  • 26. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 26 ‫باستخدام‬ ‫المتصل‬ ‫بالبيئة‬ ‫منها‬ ‫طرق‬ ‫بعدة‬ ‫بوكس‬ ‫الليست‬ ‫او‬ ‫بوكس‬ ‫للكومبو‬ ‫بيانات‬ ‫إضافة‬ ً‫ا‬‫أيض‬ ‫ونستطيع‬ ‫الطريقة‬ ‫بهذه‬ ‫ريدر‬ ‫الداتا‬ private void button1_Click_1(object sender, EventArgs e) { try { cmd = new OleDbCommand("select * from friends", con); con.Open(); dr = cmd.ExecuteReader(); comboBox1.DisplayMember = "fri_name"; comboBox1.ValueMember = "fri_no"; while (dr.Read()) { comboBox1.Items.Add(dr["fri_name"].ToString()); } dr.Close(); MessageBox.Show("‫تم‬ ‫االضافة‬ "); } catch (OleDbException xx) { MessageBox.Show("‫هناك‬ ‫خطأ‬ ‫ما‬ " + xx.Message); } finally { con.Close(); } } ‫المتصلة‬ ‫في‬ ‫مقتطفات‬
  • 27. ‫البيانات‬ ‫قواعد‬ ‫ربط‬Access‫و‬Sql server‫الـ‬ ‫بلغة‬c‫تقنية‬ ‫باستخدام‬ #ado.net alzeerhamza@gmail.com@https://www.facebook.com/hamzawey2035 hamzaweynet@gmail.com@ 27 ‫يحوي‬ ‫ولكنه‬ ‫فقط‬ ‫مقدمة‬ ‫هو‬ ‫الكتاب‬ ‫هذا‬ ‫البداية‬ ‫في‬ ‫لكم‬ ‫قلت‬ ‫قد‬ ‫ولكني‬ ‫األشياء‬ ‫بعض‬ ‫في‬ ‫قصرت‬ ‫إذا‬ ‫أعتذر‬ ‫اإليميالت‬ ‫احد‬ ‫على‬ ‫مراسلتي‬ ‫يرجى‬ ‫استفسار‬ ‫ألي‬ ‫تحياتي‬ ‫خالص‬ ‫وتقبلوا‬ ‫التقنية‬ ‫هذه‬ ‫في‬ ‫األشياء‬ ‫أهم‬ . ‫القادمة‬ ‫الكتب‬ ‫في‬ ‫وانتظرونا‬ X ‫البعسي‬ ‫علي‬ ‫حمزه‬ ‫اليمن‬ - ‫حاسوب‬ ‫برمجة‬ ‫لم‬ ‫وان‬ ‫البرنامج‬ ‫مجلد‬ ‫داخل‬ ‫البيانات‬ ‫قاعدة‬ ‫نضع‬ ‫كنا‬ ‫كلها‬ ‫السابقة‬ ‫الدروس‬ ‫في‬ ‫أننا‬ ‫أنبهكم‬ ‫أن‬ ‫يجب‬ ‫طيلة‬ ‫نفعل‬ ‫كنا‬ ‫كما‬ ‫البرنامج‬ ‫مسار‬ ‫في‬ ‫ولوضعها‬ ‫البيانات‬ ‫قاعدة‬ ‫موقع‬ ‫كتابة‬ ‫علينا‬ ‫يجب‬ ‫هناك‬ ‫تكن‬ ( ‫البرنامج‬ ‫مجلد‬ ‫نفتح‬ ‫السابقة‬ ‫الدروس‬bin( ‫مجلد‬ ‫ندخل‬ ‫داخلة‬ ‫ومن‬ )Debug‫لكي‬ ‫هنا‬ ‫ونضعها‬ ) . ‫البرنامج‬ ‫مسار‬ ‫في‬ ‫تكون‬ ‫الفيجوال‬ ‫واجهة‬ ‫من‬ ‫تستطيعون‬ ‫انتم‬ ‫تكتبوها‬ ‫ال‬ ‫أن‬ ‫تريدون‬ ‫وإن‬( ‫تبويب‬ ‫على‬ ‫الضغط‬Data) ( ‫واختيار‬Add New Data Source( ‫زر‬ ‫على‬ ‫الضغط‬ ‫ثم‬ )Next( ‫نضغط‬ ‫ثم‬ )New Connection( ‫زر‬ ‫من‬ ‫ثم‬ )Browser‫استخدامها‬ ‫نريد‬ ‫التي‬ ‫البيانات‬ ‫قاعدة‬ ‫مكان‬ ‫نحدد‬ ‫ثم‬ ) ( ‫ونضغط‬Open( ‫عليه‬ ‫مكتوب‬ ‫زر‬ ‫النافذة‬ ‫في‬ ‫لديك‬ )Test Connection‫نجاح‬ ‫الختبار‬ ) ‫ال‬ ‫ثم‬ ‫االتصال‬( ‫على‬ ‫ضغط‬OK( ‫اسم‬ ‫تحمل‬ ‫التي‬ ‫السابقة‬ ‫الواجهة‬ ‫لنا‬ ‫فتفتح‬ )Data Source Configuration Wizard‫عليها‬ ‫ومكتوب‬ + ‫عالمة‬ ‫عليها‬ ‫تفرع‬ ‫أداة‬ ‫األسف‬ ‫في‬ ‫نرى‬ ) (Connection String‫هنا‬ ‫من‬ ‫نستطيع‬ ‫االتصال‬ ‫كود‬ ‫أسفلها‬ ‫لنا‬ ‫فيظهر‬ + ‫عالمة‬ ‫على‬ ‫نضغط‬ ) ‫ا‬ ‫نص‬ ‫تحديد‬ ‫مكان‬ ‫في‬ ‫ولصقه‬ ‫بنسخة‬ ‫نقوم‬ ‫أن‬. ‫التصال‬ ‫مالحظة‬