اتعلم معايا ازاي تستخدم قواعد البيانات في السي شارب واومر المايسكل كوماند الدرس الثاني
اهلين وسهلين بالسادة الزوار والمتابعين ونكمل معاكم رحلة وامر المايسكل كوماند بلغة السي شارب وازاي نعدل علي قواعد البيانات في الدرس السابق اتعلمنا الامر SELECT و reader و كمان نستخدمهم مع Where
هنتعلم انهارده ان شاء الله ما تيسر لي شرحة في هذا الدرس
ونكمل يالا مع امر جديد وهو INSERT
الامر الذي يحمل معنا الاضافة وهنا بنقدر نضيف بيانات جديدة للجداول المهم يالا بينا نشوف ازاي بقي
ده شكل الكود
MySqlCommand command = new MySqlCommand(MySqlCommandType.INSERT)
بعده علي طول بنضيف الجدول
command.Insert("VoterHouse")
كده انا بقول لأي اوامر جاية في الطريق اني هبدأ اضيف في الجدول ده VoterHouse
طيب ازاي هضيف
.Insert("VoterID", voter.UID)
يعني الشكل المفروض يبقي كده
command.Insert("VoterHouse").Insert("VoterID", voter.UID)
يعني بتقول ان الاستعلام command والي عرفناه ب new في الكود الاول خالص
بيقول اننا هنضيف للجدول VoterHouse في الحقل VoterID قيمة voter.UID
قيمة voter.UID ممكن تكون بتساوي اي شئ بقي ارقام حروف كلمات وما الي ذلك..
في الاخر خالص بنضيف معاهم command.Execute();
وده بيقول ان السيستم هيعمل تطبيق للاوامر ديه يعني هينفذها مهمة جداً علي فكرة.
هيبقي شكل الكود بالكامل
MySqlCommand command = new MySqlCommand(MySqlCommandType.INSERT);
command.Insert("VoterHouse").Insert("VoterID", voter.UID)
.Insert("VoterName", voter.Name).Insert("Tiems", voter.Times + 1);
command.Execute();
طب دلوقتي انا محدد الجدول وبضيف قيم وبدون اي تنظيم ومش عندي القدرة علي التحكم اكتر في الي انا بضيفه
اقولك هنبدأ نستخدم Where
string rnops = npcRequest.Input;
MySqlCommand command = new MySqlCommand(MySqlCommandType.INSERT);
command.Insert("IDChoiceForVote").Insert("UID", client.Entity.UID)
.Insert("iduchoice", rnops).Where("UID",rnops);
command.Execute();
هنلاحظ اني عرفت قيمة من نوع string واسمها rnops والقمية ديه بتتغذي من npcRequest.Input
الكود الي في الاخر خالص
هتلاحظو انه فيه
(Where("UID",rnops.
وده معناه انه هيضيف في الجدول الي اسمه IDChoiceForVote
قيم في الحقوق UID و iduchoice
خلي بالك في السطر الي فيه UID بيساوي rnops
وده معناه ان هيبحث اولا عن السطر الي فيه UID قيمته بتساوي rnops
ويبدأ يضيف القيم
كده اظن انك تعرف تستخدم INSERT و SELECT
طب دلوقتي هل ممكن نستخدم reader بعد كده اخد القيم ديه واحطها ب INSERT
"طالما يوجد فكرة فلا مكان للمستحيل"
يلا نفذ طيب
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("housevotjoin").Where("id", rnop))
using (var reader = new MySqlReader(cmd))
house = reader.ReadString("HouseName");
string rnops = npcRequest.Input;
MySqlCommand command = new MySqlCommand(MySqlCommandType.INSERT);
command.Insert("HouseVoter").Insert("HouseID", house )(Where("UID",rnops.
command.Execute();
دلوقتي هتلاقي في الاول بدأت استخدم SELECT لجدول housevotjoin وبعد كده بدات اقرأ القيم
الي في الحقل HouseName وحطتها في متغير اسمه house
بس في السطر الي فيه قيمة id بتساوي rnop
كده انا معايا قيمة في المتغير house
وبرضو معايا قيمة في المتغير rnops
هبدأ اقول هتعملي اضافة في الجدول HouseVoter هتروح الاول تشوف لي السطر الي فيه
قيمة حقل UID بتساوي قيمة rnops
بعد كده هتضيف قيمة ال house في الحقل HouseID
فكر اكتر هتلاقي افكار اكتر وطرق اكتر بس جرب ومش تخاف.
___________________________________________________________
دلوقتي عاوزين ندخل علي الامر التالت معانا وهو UPDATE ده مهمته مشابهة ل INSERT
بس تعالو نشوف
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
cmd.Update("entities").Set("spouse", client.Entity.kepspouse)
.Where("UID", uid).Execute();
الامر ده هيمسك الجدول entities
ويضيف فيه الاتي
الحقل spouse هيضيف فيه قيمة client.Entity.kepspouse
بس ده لا يمكن يحصل الا لما يكون معاه الاداة Where
عشان التحديث معناه انك بتشيل بيانات قديمة وتحط الجديدة فازاي بقي تحدد القديم لو مش ضفت Where
الاداة ديه سهلة وتقريباً تعتبر مشابهة جداً ل الاضافة INSERT
وبرضو تقدرو تستخدمو قبلها redaer .
_______________________________________________________________
ندخل علي اداة DELETE
وهي الخاصة بمسح البيانات من القاعدة طبعاً
ده شكل الكود
using (var cmd = new Database.MySqlCommand(Database.MySqlCommandType.DELETE))
cmd.Delete("npcs", "id", npc.UID).Execute();
هنلاحظ مع بعض من الكود ان صيغته بتكون
cmd.Delete("npcs", "id", npc.UID)
يلا طيب نفسره
هنلاقي يا معلمين هنا بيقولك انه بيمسك الجدول npcs وراح لحقل id وحذفه الي قيمته npc.UID
طيب واحد بيسألني سؤال بخصوص هو هيمسح القيمة ولا هيمسح السطر ولا هيمسح ايه بالضبط
هنا يا باشا هيمسح السطر وطبعاً هنا مش بيستخدم Where لانه بيروح علي القيمة علي طول والي في الكود اسمها npc.UID
طيب انا عاوز الكود بتاعي اتحكم اكتر فيه
اقلك شوف الكود ده ويالا بينا نفسره مع بعض
Database.MySqlCommand cmd2 = new Database.MySqlCommand(Database.MySqlCommandType.DELETE);
cmd2.Delete("entities", "Name", client.Entity.Name).Where("UID", client.Entity.UID).Execute();
هنا بيمسك الجدول entities بس الاول هيروح علي السطر الي فيه UID بتاعه بيساوي client.Entity.UID
ويبدا يمسح client.Entity.Name من الحقل Name
اظن بقي واضح ان Where من اهم الادوات معانا عشان تمسك السطر المعين
وان الحقل بيبقي دايما بين ""
وكمان الجدول بيبقي بين "" برضو بس مقدم علي الحقل.
واحد يقولي هو انا ممكن اجيب معلومات من الجدول واعملها فحص ولو طلعت صح امسحها ولو طلعت غلط اسيبها زي ما هيه
اقولك ينفع طبعاً
بس السؤال هنا ازاي بقي نعمل كده.
يلا بينا ننفذ الكود
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("accounts").Where("Username", username))
using (var reader = new MySqlReader(cmd))
client.Entity.SubClass = reader.ReadByte("SubClass");
انا كده قرات البيانات الي انا عاوز اعملها فحص
وانا مثلا عندي قيمة عاوز اتأكد انها هيه ولا لا مثلا قيمة 6
هبدا فحص
if (client.Entity.SubClass ==6) {
}else{
}
Database.MySqlCommand cmd2 = new Database.MySqlCommand(Database.MySqlCommandType.DELETE);
cmd2.Delete("accounts", "SubClass", client.Entity.SubClass).Where("UID", client.Entity.UID).Execute();
بكده هوه هيفحص لو القيمة بتساوي 6 هيقوم هوه بحذفها ولو مش بتساوي 6 مش هيعمل اي حاجة. وممكن تخليه يعمل براحتك يعني
المهم انتو فهمتو انا قصدي ايه
اسف لو كنت طولت عليكم.
ده الي عندي ليكم انهارده والي اللقاء في درس جديد من احمد قرواش
:>)
ردحذف