-->

إشترك في النشرة البريدية

إغلاق القائمة
جميع الحقوق محفوظة لـ الاختراع سمارت © 2019

تم تجديد الموقع وسنقوم بالعمل عليه مره اخري


اتعلم معايا ازاي تستخدم قواعد البيانات في السي شارب واومر المايسكل كوماند الدرس الثاني


    اهلين وسهلين بالسادة الزوار والمتابعين ونكمل معاكم رحلة وامر المايسكل كوماند بلغة السي شارب وازاي نعدل علي قواعد البيانات  في الدرس السابق اتعلمنا الامر 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 مش هيعمل اي حاجة. وممكن تخليه يعمل براحتك يعني

    المهم انتو فهمتو انا قصدي ايه

    اسف لو كنت طولت عليكم.

    ده الي عندي ليكم انهارده والي اللقاء في درس جديد من احمد قرواش