السلام عليكم

كيف الحال ؟؟؟؟ انشاء الله بخير

اليوم راح نكمل دروس عن كيفية ربط قاعدة البيانات بلغة سي شارب

في الدرس الي فات تكلمنا عن كيفية الربط مع قاعدة بيانات اكسس وشفنا كيف نستخدم الـ DataReader عشان نجيب منها البيانات

لكن اليوم انشاء الله راح نوشوف كيف احنا ممكن نسوي اوامر SQL نأثر بها على قاعدة البيانات مثلا زي امر INSERT او DELETE او UPDATE

عشان نقدر نسوي الكلام الي قلناه نحتاج الى:

1) رابط Connection من نوع OLEDBCnnection

2) امر Command من نوع OLEDBCommand

وبعد كذا راح نسوي تنفيذ Execute للامر تبعنا وبعدين نشوف التغير الي صار في قاعدة البيانات حقنا

 

السيناريو: من الدرس الي السابق كان عندنا قاعدة بينات اكسس اسمها Robatic مخزنه في الـ F :\Robatic.mdb وفيها جدول باسم People والجدول فيه 3 اعمده وهي

 ID (مفتاح اساسي Primary key)

Name

Phone

احنا راح نشوف كيف نسوي امر بالسي شارب لإدخال بيان جديد, خلونا نشوف الكود التالي

 

 

لو تلاحظوا انه في الكود الي فوق وكمان في الكود الي موجود في الدرس السابق  دايما حاولوا استخدام try catch عشام مين يدري  ممكن الواحد ينسى حرف او يغلط في شيء بسيط وتكون النتيجه ابدا غير مرضيه

المهم لو حاجه في الكود الي فوق انا قمت بتعريف OledbConnection وسميته cn ولو تلاحظوا كل اوبجكت من OledbConnection له property اسمها ConnectionString وهذي هي الي تحدد

نوع قاعدة البيانات (سواء اكسس او اوراكل او مايكروسفت SQL)  وبعد كذا قمت بتعريف cmd من نوع OledbCommand وهذا من اسمه هو الكماند الي عن طريقه راح ننفذ عبارة SQL

على قاعدة البيانات  ولكن هذا الاوبجكت يحتاج شيئين اساسيين وهما connection والثاني CommandText الكونكشن معروف والكماند تكست هو الي فيه عبارة SQL

والعباره الي انا حاطها هنا هي من نوع INSERT والي تدخل record جديد لقاعدة البيانات برقم 6 واسم arab-valcon.com ورقم تلفون 0795151515  وبعد كذا اذا نبغا نسوي اي تغيير

لقاعدة البيانات لازم نتأكد انه الكنكشن مفتوح وبعدين ننفذ الامر وبعد كذا نقفل الكنكشن

في الدرس السابق استخدمنا method ExecuteReader ولكن هنا راح نستخدم بدالها ExecuteNonQuery وهذي المثود تقوم بتنفيذ عباره الـ SQL الموجوده في الـ CommandText تبع

cmd وترجعلنا عدد الصفوف الي تأثرت بعبارة الـ SQL فخلونا نشوف قاعدة البيانات قبل لما نعمل run للبرنامج الي فوق

 

 

وبعد ما نعمل run لبرنامجنا راح تصير قاعدة البيانات بهذا الشكل

 

 

الـ output تبع برنامجنا راح يكون حاجة زي كذا

 

 

وبنفس الطريقه تقدر تسوي DELETE او UPDATE  كل الي عليك تسويه انه تغير بس الـ CommandText تبع cmd يعني راح يصير زي كذا

 

Delete Command:  cmd.CommandText = "DELET FROM People WHERE ID='6'";

Update Command:  cmd.CommandText = "UPDATE People SET Phone = '09999999999' WHERE ID = '6'";

 

الحين راح نشوف كيف نسوي برنامج زي تبعنا الي فوق بس راح نخلي الـ user هو الي يدخل البيانات بدل, نفرض انه عدنا متغير اسمه id للـ ID ومتغير اسمه name للـ Name ومتغير

اسمه phone للـ Phone هنا عندن طريقتين

الاولى هي عباره عن concatenation ما بين المدخلات والـ CommandText بس  ممكن تلخبط في حالة وجود بيانت كثيره او وجود بيانات نوعها غير string لانه بمجرد ما نسوي concatenate

راح يتغير نوع المدخلات الى string , وعشان نفهم اكثر خلونا نشوف الكود التالي

 

لاحظوا الكود الي داخل المربعات الحمراء خاصه الكود المتعلق بالـ CommandText انا عامل concatenate ما بين كل من الـ id و name و phone والـ CommandText بس لو نسيت

فاصله او زودت فاصله ممكن يصير عندنا error يقهر وهذا الكلام ما نبغاه مع انه البرنامج شغال واعطى النتيجه الي نبغاها بس تخيل لو عندنا 13 مدخل بدل 3 كيف الوضع راج يكون ؟؟؟

وهنا في حالتنا هذي الوضع سهل لانه انا معرف نوع البيانات في قاعدة البيانات من نوع text  يعني زيها زي الـ string , قبل لا نشوف الطريقه الثانيه خلونا نشوف مخرجات البرنامج

الي فوق

 

 

 

الطريقه الثانيه سهله جدا واكثر امان more safe من الطريقه الاولى وفكرتها بسيطه تعتمد على تعريف parameters وهذي الـ parameters نكتبها داخل الـ CommandText ولكن نضيف قبلها

الرمز @ عشان الكمبيوتر يعرف انها عباره عن parameter وبعد كذا نعطيها قيمه على كيفنا ممكن عن طريق متغير او عن طريق InsertBox اذا كان موجود او عن طريق TextField

خلونا نشوف الكود التالي عشان توضح الفكره اكثر

 

 

لاحظوا الكود الي في المربع الاحمر شوفوا الـ CommandText مافيه concatenate ولا وجع راس بس فيه اسماء الـ parameters وقبل كل واحد فيه الرمز @ بس عشان يفهم الكمبيوتر انه هذا

parameter بس في هذي اللحظه انا ما عرفت parameter ولكن شوفوا السطر الي فيه العباره

cmd.Parameters.Add ("@id", OledbType.VarChar);

في هذا السطر انا فعليا قمت بتعريف parameters  بس لاحظوا انه لازم يكون نفس الاسم الي انت حددته قبل كذا في الـ CommandText وبعد ما تعرف براميتر تقدر تعطيه قيمه زي ما تبغى

من اي مكان ممكن يكون TextField او متغير او ممكن من براميتر ثاني زي ما راح نشوف في الدروس الجايه انشاء الله

وهذي نتائج الكود السابق

 

 

انشاء الله تكونوا استفدتوا من درس اليوم وانشاء الله نشوفكم في درس ثاني وبإذن الله في الدرس الجاي راح نشوف كيف نسوي windows application وعن طريقه احنا راح نكتب الـ Query الي نبغاه

ونعرض البيانات في DataGrid  واعذروني على القصور والتأخير

.اخوكم Robatic

 
Hosted by www.Geocities.ws

1