articles‏ > ‏

ورشة عمل : بناء تطبيقات قواعد البيانات باستخدام سي شارب (C#)

تم الإرسال في ٢٣‏/١١‏/٢٠١٣ ٨:٢٩ ص بواسطة obada dawara   [ تم تحديث ٢٠‏/١٢‏/٢٠١٣ ١٠:٣٥ ص ]
ورشة عمل
بناء تطبيقات قواعد البيانات باستخدام #C


السلام عليكم ورحمة الله وبركاته
تقام هذه الورشة في جامعة حلب في كلية الهندسة الكهربائية والإلكترونية تحت إشراف مخبر البحث العلمي في الكلية وبإشراف الدكتور محمد فراس شريّف وقد بدأت بتاريخ 10/11/2013.
بإمكانكم الاطلاع على مواعيد ومكان الورشة من الإعلان التالي:
إعلان ورشة بناء تطبيقات قواعد البيانات باستخدام C# بالحجم الكامل
(إضغط على الصورة لعرضها بحجمها الكامل)
  تتألف الورشة من أحد عشر جلسة يتوزع محتواها كما يلي:
    • جلستان تعريفيتان ببيئة NET Framework. و أساسيات syntax لغة البرمجة #C وبرنامج Visual Studio.
    • ثلاث جلسات للتعريف بأساسيات ومبادئ البرمجة غرضية التوجه OOP.
    • أربع جلسات للتعريف بالمفاهيم الأساسية المتعلقة بقواعد البيانات SQL Server 2008 والتعليمات الأساسية في لغة SQL.
    • جلستان للتعرف على كيفية الربط بين قواعد البيانات SQL Server ولغة #C.
    •
سيتم خلال الورشة بناء مشروع يتضمن كافة المفاهيم الواردة في الورشة.

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

 الجلسة الأولى :
على الرغم من أننا واجهنا بعض الصعوبات في تأمين جهاز الإسقاط مما أدى إلى تأخر بدء الجلسة لمدة عشر دقائق إلا أن الجلسة كانت متميزة بتوفيق من الله عز وجل ،والمميز هو أن الحضور كانوا إيجابيين ومتفاعلين  بشكل مشجع جداً - أتوجه لهم بالشكر جميعاً :) - وملخص الأفكار التي تناولتها الجلسة : 
1- ما المقصود ببيئة Net Framework. ؟؟
   
 هي بيئة عمل بدأت ببناءها شركة Microsoft في عام 2000 وتم إطلاقها رسمياً في 13/2/2002 ،تحتوي على عدد كبير جداً من المكاتب التي تسهل بناء           التطبيقات والمواقع ،وتدعم عدد من لغات البرمجة أهمها Visual Basic و #C و ++C ،وتؤمن في بنيتها تسهيلات كبيرة للتنسيق بين فرق العمل ،كما تؤمن            حماية متميزة للمواقع المبنية باستخدامها. 

2- ما هي المزايا التي قدمتها Net Framework. ؟؟
       تأمين الاستقلالية في تطبيقاتنا عن التعامل مع نظام التشغيل.
       احتواءها على آلاف المكاتب التي سهلت بناء تطبيقات سطح المكتب ومواقع الإنترنت.
       بالإضافة إلى مجموعة من المزايا سنتعلمها بشكل عملي في الجلسات القادمة.

3- ما هي لغة البرمجة #C وما الذي يميزها عن غيرها ؟؟
هي لغة ظهرت بالترافق مع بيئة Microsoft .NET Framework في عام 2002 وطرحت في وقتها كلغة تجمع بين أفضل مزايا كل من Java,C++,C وتؤمن سهولة التطوير كما في Visual Basic وقتها وهي تصنف مع اللغات العالية المستوى وهي لغة غرضية التوجه في بنيتها وآخر إصدار منها كان C# 5.0 والذي ظهر في 15/8/2012.

4-  أنواع التطبيقات التي يمكن كتابتها باستخدام #C هي :
     
 Console Applications
      Windows Forms Applications
      WPF Applications
      ASP.Net Wep Applicaions

5- تعرفنا أيضاً على برنامج Visual Studio 2010 وأقسامه الرئيسية وطريقة إنشاء مشروع جديد من نوع Windows Forms Applications.

الجلسة الثانية :
أهم ما تحدثنا عنه في هذا الجلسة هو :

1- أنواع البيانات في لغة #C وطريقة تعريف متحول :
حيث قلنا أن أنواع الأعداد الصحيحة في #C هي : int,long,short والفرق بينها هو الحجم الذي تحجزه في الذاكرة والأنواع التي تقبل فواصل عشرية هي double,float وقلنا أن لكل نوع كلاس مكافئ في .Net فمثلاً النوع int يكافؤه النوع INT32 وهكذا ...
و تحدثنا أيضاً عن نوع البيانات المنطقي bool ونوع البيانات المحرفي char ونوع البيانات النصي string.
وقلنا أنه لتعريف متحول نكتب كما في الشكل العام التالي :
;data_type variable_name       
أو
;data_type variable_name = initial_value       
2- طريق التحويل بين أنواع البيانات :  
 • تحدثنا عن عدة طرق للتحويل بين أنواع البيانات أهمها الطريقة ;()ToString. التي تمكننا من التحويل من أي نوع بيانات إلى النوع string ،
  مثال :
       int x = 15;   
       string s = x.ToString();
 • تحدثنا أيضاً عن الكلاس Convert الذي يفيدنا في التحويل بين أغلب أنواع البيانات.
  مثال :
       float f = 15.6f;
       int x = Convert.ToInt32(f);
 • تحدثنا عن طريقة التحويل القسري casting والتي تتم بذكر النوع المراد التحويل له بين قوسين قبل المتحول الذي نريد تحويله.
  مثال :
       float f = 15.6f;
       int x = (int) f;
 • تحدثنا عن التحويل عبر الطريقة Parse والتي تتبع لأغلب أنواع البيانات.
       float f = 15.6f;
       int x = int.Parse(f);
3- المصفوفات :
 • طريقة تعريف مصفوفة أحادية البعد في #C هي :
   data_type[ ]  array_name = new  data_type[length];
    أو بإمكاننا إدخال عناصرها بشكل مباشر كما يلي:
    data_type[ ]  array_name = { value1,value2,............  };
 أمثلة:
   int[ ] x = new int[10];
   int[ ] x = {10,4,9,1};

 • يمكن الوصول إلى الحجرة في المصفوفة عن طريق رقمها و يبدأ ترقيم الحجرات من الـ 0 أي انه إذا أردنا الوصول إلى الحجرة الثالثة من المصفوفة السابقة
    نكتب [2]x

4- طريقة تعريف المصفوفات ذات أكثر من بعد واحد :

 
• ثنائية البعد : 

    data_type[ , ] array_name = new data_type[rows,columns]; 

 
• يمكن تعريف المصفوفات ثلاثية الأبعاد و ما فوق بأن نضيف الفواصل ضمن الأقواس المربعة في بداية التعريف و نحدد طول كل بعد في نهاية التعريف . 
 • ويمكن ملئ عناصر المصفوفة الثنائية مباشرة كما في المثال التالي : 
    int[ , ]   a = { {1,2,3} , {4,5,6} , {6,7,9} };

 • يوجد في C# ما يسمى بمصفوفة المصفوفات و يتم تعريفها بالشكل
 data_type[ ][ ] array_name = new data_type[Number of arrays][ ]; 
  ونلاحظ أن القوس الثاني يترك فارغاً دون تحديد طول.
  ولملئها مباشرة نكتب بشكل مشابه لهذا المثال :
 int[ ][ ] a = new int[2][] { new int[ ]{1,2},new int[ ]{3,4} };
  وتسمى هذه المصفوفة Jagged Array و
يمكن أن تكون بأكثر من بعدين بأن نضيف أقواس مربعة لكل بعد إضافي.

 
4- الشروط والحلقات : 
  تحدثنا بعدها عن تعليمة الشرط if وطريقة تعريفها :
  if( condition )
  {
    // instructions
  }
  else
  {
    //instructions
  }
و يمكن عدم ذكر القسم else كما يمكن كتابة (else if(condition وفي حال كان المراد من الشرط تنفيذ تعليمة واحدة يمكن عدم كتابة الأقواس...
الجلسة الثالثة :
(محتوى الجلسة بشكل مكتوب قيد الإعداد)
تحدث ضمن الجلسة عن مجموعة "دورة البرمجة باستخدام C#" على فايسبوك والدروس المطروحة ضمنها
رابط المجموعة :
 facebook.com/groups/c.sharp.tutorial
رابط الدروس : 
dropbox.com/sh/m52325e9yxeffw0/iXRgW0yzLP
الجلسة الرابعة :
(محتوى الجلسة بشكل مكتوب قيد الإعداد)

الجلسة الخامسة :
 في هذه الجلسة قمنا بمراجعة جميع مفاهيم البرمجة غرضية التوجه OOP التي تناولناها في الجلسات السابقة وقمنا بتطبيقها بشكل عملي على برنامج Visual Studio وللحصول على ملفات المشروع الذي أنشأناه أثنا الجلسة بإمكانكم تحميلها من الرابط التالي : Session5.rar
وبإمكانكم مشاهدة أو تنزيل الشرائح التي تم عرضها أثناء الجلسة بصيغة pdf من الرابط التالي : 5th_Session.pdf

الجلسة السادسة :
 في هذه الجلسة لم نتمكن من تأمين جهاز إسقاط Projector فكانت الجلسة نظرية فقط ولن تحتسب من خطة الورشة وقد تحدثنا فيها عن أساسيات قواعد البيانات وكانت أهم الأفكار هي:
  مالمقصود بقاعدة البيانات ؟؟
 نستطيع أن نطلق على أي مجموعة من البيانات مخزنة بشكل منظم اسم قاعدة البيانات ،وتتكون قاعدة البيانات في الحواسيب من جدول "Table" واحد على الأقل ويتكون الجدول من سجلات "Records" ويتكون السجل من الحقول "Fields" ويكون لكل حقل نوع بيانات مخصص.

  ما المقصود بمحرك قواعد البيانات Database Engine ؟؟
  هو برنامج يتم تنصيبه على الحاسب ويتم من خلاله بناء قواعد البيانات وتخزين البيانات وتعديلها والبحث والإستعلام عنها ويوجد الكثير من محركات قواعد البيانات لكن أشهرها :
Oracle
MySQL
Microsoft SQL Server
Microsoft Access
SQLite
  مالمقصود بلغة SQL ؟؟
هذا المصطلح هو اختصار لـ Standard Query Language أي لغة الإستعلامات القياسية ،وهي لغة استعلامات تستخدم للتعامل مع محركات القواعد البيانات بحيث يتم من خلالها إنشاء قواعد البيانات وإنشاء الجداول وإضافة السجلات وتعديلها وحذفها وجميع العمليات المتعلقة بقواعد البيانات.
ويجب لفت الإنتباه أن هذه اللغة هي ليست لغة برمجة وإنما هي لغة موجهة حصراً للتعامل مع محركات قواعد البيانات (Databases Engines).
وينبغي التفريق في المفهوم بين لغة SQL ومحرك قواعد البيانات لأن الكثيرين يظنون أن كلمة SQL تشير إلى محرك قواعد البيانات Microsoft SQL Server في حين أن SQL هي لغة وMicrosoft SQL Server هو محرك قواعد بيانات يتم التعامل معه عبر لغة SQL.

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

  ما المقصود بمراكز البيانات Data Centers ؟؟
 يمكن تسميتها أيضاً مستودعات البيانات وهي عبارة عن منظومات عملاقة تضم عدد كبير جداً من أجهزة التخزين والتغذية والذواكر والمعالجات وأجهزة الإتصال تعمل تحت تصرف مخدمات Servers ينصب عليها محركات قواعد البيانات لتستخدم لتخزين ومعالجة كميات هائلة من البيانات وحفظها وإدارتها واخذ نسخ احتياطية عنها ونشرها عبر الشبكات ،والأمثلة كثيرة عنها مثل أماكن تخزين البيانات لشبكة Facebook و Google و Microsoft و Dropbox و غيرها من الشركات العملاقة حول العالم وأنظمة الحكومات الإلكترونية وبعض شركات الإتصالات.
الصور التالية توضح أجزاء من مراكز تخزين بيانات لشركة Google :



(أضغط على الصورة لعرضها بحجمها الكامل)
(تحديث) الأحد 1/12/2013 :
اليوم قمنا بتجريب أمثلة عملية عن الوراثة وأكملنا الجلسة السادسة (أساسيات قواعد البيانات) وشاهدنا مقطع الفيديو الذي يعرض قسم من سيرفرات شركة Google
بإمكانكم مشاهدته هنا

ثم تحدثنا بشكل عملي عن كيفية إنشاء قاعدة بيانات جديدة عبر إضافة ملف Service Based Database وعن كيفية إنشاء جدول جديد من قسم Server Explorer في برنامج Visual studio وبعدها تحدثنا عن فكرة الـ Primary Key وفائدته في قواعد البيانات ثم تحدثنا عن فكرة الـ Stored Procedure وبعدها انتقلنا للحديث عن آلية ربط الواجهات ببعضها وذلك عبر إنشاء object من كلاس الفورم المطلوب عرضه وبعدها نستدعي إما الطريقة ()Sow أو الطريقة ()ShowDialog.

بإمكانكم الحصول على المشروع الذي قمنا بالعمل عليه أثناء الجلسة من هنا : Session6.rar
بإمكانكم مشاهدة شرائح الـ Power Point  التي تم عرضها في الجلسة أو تنزيلها من هنا : 6th_Session.pdf
 
لا تنسوا المسابقة : 
يطلب فيها "إنشاء تطبيق يفيد في مجال الرياضيات وأن من يضمن عمليات أكثر في البرنامج و يكون شكل واجهات برنامجه أفضل سيكون الفائز"
الجائزة ستكون : قرص تعليمي يحوي مجموعة متميزة ونادرة من الكورسات العالمية في مجالات البرمجة والتصميم وقواعد البيانات.

الجلسة السابعة :
في هذه الجلسة تحدثنا عن طريقة إنشاء DataSet من قوائم Visual Studio وقمنا بسحب الجداول ضمنها إلى الواجهة المطلوبة ليتم بشكل آلي توليد أداة جدول وشريط تحكم ضمن الواجهة وربطها مع الجدول في قاعدة البيانات ... ثم قمنا بالتعرف على مجموعة من تعليمات الـ SQL وهي كالتالي:
  التعليمة SELECT :
تستخدم هذه التعليمة للإستعلام عن البيانات المخزنة في جداول قاعدة البيانات ويتم ضمنها تحديد الأعمدة المراد إعادة قيمها والجداول التي سيتم جلب البيانات منها ولها الشكل العام التالي:
  SELECT column_name , column_name , ....
FROM Table_name  
وفي حال كنا نريد الإستعلام
SELECT * FROM Table_name  
 مثال:
SELECT [Name] , Average FROM Students  
وضعنا الأقواس حول الحقل Name لأن الكلمة Name محجوزة في لغة SQL.
مثال آخر:
SELECT * FROM Table_name  

  التعليمة SELECT DISTINCT :
هذه التعليمة نستخدمها في حال كنا نريد أن لا تحوي نتائج الإستعلام على تكرار في القيم وشكلها العام :
  SELECT DISTINCT column_name , column_name , ....
  FROM Table_name
  التعبير WHERE :
نستخدم هذا التعبير لإضافة شروط على تعليمات الإستعلام والتعديل والحذف وسنبدأ باستخدامه مع التعليمة SELECT بالشكل التالي :

  SELECT column_name , column_name ,
  FROM Table_Name
  WHERE
  Column_Name  Operator Value

حيث يمكن أن يكون المعامل Operator عبارة عن معامل مقارنة < , > , = , != , =< , => أو معاملات خاصة مثل : LIKE أو BETWEEN أو IN
 مثال :
SELECT * FROM Students 
WHERE
Nationality  = 'سوري'

 في هذه التعليمة نحن نستعلم عن جميع معلومات الطلاب الموجودين في الجدول Students والذين يحملون القيمة 'سوري' في حقل الجنسية (Nationality).

  تعدد الشروط :
 نستطيع أن نكتب أكثر من شرط في نفس الوقت ضمن قسم التعبير WHERE ويفصل بين هذه الشروط إما AND أو OR حيث أن الشرط AND يلزم تحقيق جميع الشروط ليتحقق أما الشرط OR فيكفيه أن يتحقق أحد الشروط.

مثال :
   SELECT [Name],L_Name,Birthday FROM Students
   WHERE Nationality = 'سوري' AND Average > 80

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

مثال آخر:

  SELECT * FROM Students
  WHERE
  Average > 80 OR Birthday > '1/1/1990'

في هذا الإستعلام اشترطنا أن يكون معدل الطالب أكبر من 80 أو تاريخ ميلاده بعد التاريخ 1/1/1990 وسيظهر في نتيجته أي طالب يحقق أحد الشرطين.

يمكن الجمع بين AND و Or عبر استخدام الأقواس كما في هذا المثال:

SELECT * FROM Students
  WHERE
  (Average > 80 OR Birthday > '1/1/1990') AND Nationality = 'سوري'

في هذا الإستعلام اشترطنا أن يكون معدل الطالب أكبر من 80 أو تاريخ ميلاده بعد التاريخ 1/1/1990 ويجب أن يكون في جميع الأحوال جنسيته سوري أي سيظهر في نتيجة هذا الإستعلام أي طالب يحقق أحد الشرطين الأول أوالثاني بالإضافة إلى الشرط الثالث الإلزامي.

  المعامل LIKE:
يستخدم لاشتراط قالب معين على حقل ما فمثلا لو أردنا أن نبحث عن الطلاب الذين يبدأ إسمهم بحرف الألف فإننا نكتب :
 SELECT * FROM Students
  WHERE
  [Name] LIKE 'أ%'
حيث % تعني أياً كانت الأحرف التي تلي حرف الألف وفي حال كتبنا الشكل التالي : 
  [Name] LIKE 'أ_'
فإننا نقصد أن الإسم المطلوب ينبغي أن يبدأ بحرف الألف ويليه حرف واحد فقط.

وتسمى إشارتي '_' و '%' في SQL بالـ Wildcards.

  المعامل BETWEEN:
يستخدم لاشتراط أن تكون القيمة المطلوبة واقعة ضمن مجال ما فمثلاً لو أردنا أن نستعلم عن جميع الطلاب الذين حصلوا على معدل بين الـ 80 والـ 90 فإننا نكتب كما يلي:
  SELECT * FROM Students
  WHERE
  Average BETWEEN 80 and 90
  المعامل IN :
يستخدم لاشتراط على عمود ما قيمة من بين مجموعة محددة من القيم فمثلاً لو أردنا أن نستعلم عن الطلاب الذين تكون جنسيتهم إما سوري أو ألماني أو بريطاني فإننا نكتب كما يلي:
  SELECT * FROM Students
  WHERE
  Nationality IN ('سوري' , 'ألماني' , 'بريطاني')

  التعبير ORDER BY :
يستخدم لترتيب النتائج التي تنتج عن تنفيذ التعليمة SELECT ويمكن الترتيب إما تصاعدياً أو تنازلياً ولها الشكل العام التالي :

  SELECT column_name , column_name ,
  FROM Table_Name
  ORDER BY column_name,column_name

وبإمكاننا تحديد طريقة الترتيب عبر ذكر ASC (تصاعدي) أو DESC (تنازلي) بعد اسم العمود

مثال :
  SELECT * FROM Students
  WHERE
  Average > 80
  ORDER BY [Name] DESC
في هذا المثال قمنا بالإستعلام عن جميع معلومات الطلاب الذين معدلهم أكبر من 80 وقمنا بترتيب النتائج بحسب الإسم تنازلياً.

 • التعليمة INSERT INTO :
تستخدم لإضافة سجلات جديدة إلى جدول ما ويتم ضمنها تحديد الأعمدة مع القيم المقابلة ولها الشكل العام التالي:
   INSERT INTO Table_name
   (column1,column2,.....)
   VALUES
   (value1,value2,...........)
مثال:
   INSERT INTO Students
   ([Name],L_Name,Gender,Birthday,Average)
   VALUES
   ('obada' , 'dawara' , 1 , '1/1/1990' , 80)

في حال كان لدينا حقل في قاعدة البيانات يتم ترقيمه تلقائياً فإنه لا يمكن ذكره في تعليمة INSERT.
وفي حال كنا نريد أن نقوم بعملية إدخال تتضمن جميع الأعمدة في الجدول وبترتيبها الأصلي في الجدول فإنه بإمكاننا أن نقوم بعملية الإدخال دون ذكر الأعمدة كما في المثال التالي:
  INSERT INTO Students
  VALUES
  ('obada' , 'dawara' , 1 , '1/1/1990' , 80)

 • التعليمة UPDATE :
تستخدم لتعديل سجل أو مجموعة من السجلات الموجودة في أحد الجداول ولها الشكل العام التالي:
   UPDATE Table_name
   SET
   column1 = value1,
   column2 = value2,
   .....
   WHERE
   Conditions

في القسم Conditions نكتب شرط أو شروط التعديل وينطبق عليه جميع ما ذكرناه مسبقاً في قسم WHERE في تعليمة SELECT.

مثال:
   UPDATE Students
   SET
   [Name] = 'عبد الرحمن'
   WHERE
   ID = 5

في هذه التعليمة قمنا بتغيير اسم الطالب الذي رقمه التسلسلي 5 إلى الإسم عبد الرحمن.
مثال آخر:
UPDATE Students
SET
Nationality = 'عربي سوري'
WHERE
Nationality = 'سوري'

في هذا المثال قمنا بتغيير خانة الجنسية إلى القيمة "عربي سوري" لجميع الطلاب الذين يحملون القيمة "سوري" في خانة الجنسية .

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

 • التعليمة DELETE :
تستخدم هذه التعليمة لحذف سجل أو مجموعة من السجلات من الجدول ولها الشكل العام التالي:

   DELETE FROM Table_name
   WHERE
   Conditions

وكما هو الحال في تعليمة UPDATE فإن القسم Conditions نكتب ضمنه شرط أو شروط التعديل وينطبق عليه جميع ما ذكرناه مسبقاً في قسم WHERE في تعليمة SELECT.
مثال : 

   DELETE FROM Students
   WHERE
   
ID = 3
قمنا في هذا المثال بحذف الطالب ذو الرقم 3.

ملاحظة: في حال لم يتم ذكر القسم WHERE فإنه سيتم حذف جميع سجلات الجدول ولا يمكن التراجع عن عملية الحذف لذا يجب أن نكون حذرين.

بإمكانكم مشاهدة شرائح الـ Power Point  التي تم عرضها في الجلسة أو تنزيلها من هنا : 7th_Session.pdf

الجلسة الثامنة :

جلسة اليوم كانت عملية بالكامل حيث تحدثنا ضمنها عن طريقة تنفيذ أكواد SQL التي تعلمناها في الجلسة السابقة على برنامج Visual Studio حيث قمنا بإنشاء مشروع جديد وإضافة ملف قاعدة بيانات جديدة من نوع Service Based Database وقمنا بإضافة جدول جديد وتطبيق تعليمات الـ SQL من القسم New Query.

الجلسة التاسعة :
في جلسة اليوم قمنا بمراجعة جميع المفاهيم المتعلقة بقواعد البيانات التي تم تناولها سابقاً ثم انتقلنا للحديث عن تحليل النظم ومخططات الـ ERD والتي يشير مصطلحها إلى (Entity Relationship Diagram) حيث تمكننا هذه المخططات من توصيف كيانات أنظمتنا بدقة ووضوح وقد تعرفنا أيضاً على كيفية رسم الكيانات وأنواع العلاقات فيما بينها:
 • one to many
 • one to one
 • many to many
وبعدها تحدثنا عن كيفية تحقيق العلاقات باستخدام أكواد SQL في تعليمات الـ SELECTعبر ربط المفاتيح الرئيسية Primary Keys مع المفاتيح الثانوية Foreign keys .
وبعدها تعرفنا على التوابع المخزنة Stored Procedure وطريقة انشاءها وتعريف بارمتراتها في برنامج Visual Studio.


الجلسة العاشرة :
تمثل هذه الجلسة والتي تليها خلاصة الورشة حيث وصلنا إلى مرحلة قطف ثمار جميع ما زرعناه في الجلسات السابقة من الورشة ...
في هذه الجلسة عدنا إلى الحديث عن لغة C# وتحدثنا عن طريقة الربط بين قاعدة البيانات ولغة الـ C# ،حيث تحدثنا عن الكلاس SqlConnection الذي يستخدم لفتح وإغلاق الإتصال مع قاعدة البيانات وقمنا أثناء الجلسة بتحديد مسار الإتصال عبر نسخ الخاصية Connection String لقاعدة البيانات وكتابته كبارمتر في أثناء تعريف object من الكلاس Connection String .
ثم انتقلنا بعدها للحديث عن الكلاس SqlCommand وقلنا أننا نستخدمه لتنفيذ تعليمات الـ SQL على قاعدة البيانات التي قمنا بالاتصال بها باستخدام الكلاس SqlConnection قبل قليل.
تحدثنا بعدها عن الكلاس SqlDataAdabter الذي تعلمنا استخدامه لتخزين نتائج الإستعلامات (SELECT) في غرض من الكلاس DataTable
والذي يمثل جدول برمجي.
تحدثنا بعدها عن الأداة DataGridView والتي تظهر بشكل جدول استخدمناها لعرض نتائح الإستعلامات من قاعدة البيانات وتحدثنا عن الخاصية DataSource التي نسند لها أغراض من الكلاس DataTable.
وقد قمنا خلال الجلسة ببناء تطبيق بسيط يمثل دليل هواتف وأنهينا واجهة الإضافة والبحث والحذف ...

بإمكانكم الحصول على ملف المشروع الذي قمنا ببناءه أثناء الجلسة من هنا : Contacts.rar

أرجو أن أكون قد وفقت في الشرح ... أراكم في الجلسة القادمة :)

أشخاص لابد لي من شكرهم :
 • الدكتور خلف العبدالله (عميد كلية الهندسة الكهربائية والإلكترونية)
 • الدكتور مالك العلي (نائب عميد كلية الهندسة الكهربائية والإلكترونية للشؤون الإدارية)
 • الدكتور محمد فراس شريّف (رئيس قسم هندسة الميكاترونيكس)
 • المهندس محمد حمودة (أستاذ في مخبر الإتصالات الرقمية)
جميعهم استقبلوني برحابة صدر وساهموا بتأمين وتسهيل الموافقات اللازمة والقاعات وأجهزة الإسقاط ،جزاهم الله عنا كل خير.

وأيضاً أتوجه بالشكر لزملائي:
( غيث كيالي - محمد يمان قلعه جي - محمد فاتح كادورة - محمود ماردنلي - أمين سيو - فادي سباغ )
الذين كانو عوناً لي في أثناء الجلسات من مساعدة في توصيل الأجهزة وتأمين الأقلام والأدوات وأخذ الحضور ...

Comments