Software_Engineering_Lab_2_(FCIS_2024)
السلام عليكم ورحمه الله وبركاته. المرة اللي فاتت عرفنا إن، أو كنا عملنا إيه؟ كنا عملنا الـ Actor ID وجبنا الcombo box ده، وكنت بـ retrieve الـ data من الـ database اللي في الـ Oracle من غير ما اروح للـ Oracle، صح كده؟ قلنا إن إحنا بنعمل كذا كذا خطوة، أول حاجة إن إحنا بنفتح connection، تاني حاجة بنعمل الحاجات بتاعة الـ command اللي هو الـ text اللي هي جملة الـ select، الـ type إن أنا بقول له إن هي text اللي هي جملة الـ select، بعدين
بـ اعمل بقول له نفذ بقى الأمر بـ الـ Execute Reader وكنا بنعرض كل الـ IDs هنا، تمام؟ النهار ده بقى هنعمل إيه؟ عايزين لما نختار Actor ID معين، يجيب لي الـ name بتاعه والـ gender بتاعه، كل ده في Table، تقريبًا اسمه Actors، فـ إحنا عايزين نتعامل مع الـ Table
مش بس كده، لا إحنا عايزين لما نحط ID معين أو ID مختلف أو جديد يعني، و name جديد و gender جديد نقدر إن إحنا نعمل insert في الـ Oracle database من غير ما نستخدم Oracle، هنعمل ده كله من الـ Visual Studio. نفس الفكرة للـ update.
لو أنا عايزة مثلا أغير الاسم أو أغير الـ gender، بـ اعمل update، المفروض هو يسمع هناك في الـ database من غير ما أروح لـ Oracle، وفي نفس الوقت،و نفس الفكرة برضه إيه؟ الـ delete. تمام؟ فـ ده اللي إحنا هنعمله. طيب، إحنا محتاجين نعمل إيه؟ قلنا إحنا محتاجين نعمل الـ form دي. الـ form دي بتعمل إيه؟ الـ form دي لما بتختار أنت بتختار ID معين، بـ يظهر لك الـ name بتاعه بتاع الـ ID ده، والـ gender بتاعه بتاع الـ actor.
تمام؟ فـ معنى كده إن إحنا عايزين نعمل إيه؟ يعني إحنا لو جينا مثلا اتكلمنا كلام عام جدًا، فـ أي حد، أنا عايزة أي comment هنا مثلا، مثلًا مثلًا، ماشي، إحنا قلنا إيه؟ إحنا قلنا إن إحنا عايزين نجيب الـ name والـ gender بتاع الـ actor، اللي الـ ID بتاعه هو اللي أنا عملت له select. حلو؟ حلو، بنفس الطريقة اللي أنا قلتها دي، إحنا هنعمل إيه؟ إحنا عايزين يعني
هـ ن select، صح كده؟ هـ ن select إيه بقى؟ هـ ن select الـ name بتاع الـ actor، وهـ ن select الـ gender بتاع الـ actor، منين؟ من الـ table اللي اسمه Actors، اللي فيه كل الـ actors، أنا قلت إيه؟ الـلي، الـلي الـ ID بتاعه، الـ ID اللي أنا عملت له select. حلو كده؟ هـ نكتب دي إزاي؟ الـلي، اللي هي where، الـ ID بتاع الـ actor اللي هو اسمه Actor ID أعتقد، بيساوي الـ ID اللي أنا هـ اعمل له select من
Combo box. صعبة? مش صعبة. ماشي? فنعمل ده ازاي? ده اللي احنا عايزين نعرفه. هنعمل بس كده. اه ده اللي احنا كنا عاملينه المرة اللي فاتت. ان احنا كنا امم ده combo box ده كان جواه كل الIDs. احنا قريناها اصلا من المرة اللي فاتت. هنا عايزين نعمل ايه بقى? عايزين لما نختار ID من هنا يظهر لنا بياناته هنا. حلو? حلو. طيب هنعملها ازاي? في اه مش احنا بنقول
إن إحنا أصلًا لما نـ select item من الـ combo box، يجيب لنا بياناته، أو نـ select actor ID يجيب لنا بياناته، فـ إحنا عايزين نشوف هنا حاجة بتقولي لما select، أعمل كذا. فـ لو دوسنا على الـ combo box ورحنا هنا عند العلامة دي، هنلاقي إن فيه حاجة اسمها Select Index Changed، لما الـ index أو لما أ select حاجة من الـ combo box، فـ ندوس عليها دبل كليك، هـ يجيب لنا الـ function دي. الـ function دي بقى اللي إحنا هنعمل فيها كل الحوارات دي. لما نـ select هـ يحصل كذا.
صح؟ صح، يبقى لما الـ event ده يحصل، هـ يحصل إيه؟ حلو؟ حلو، هـ نعمل إيه؟ نحط جملة الـ select هنا، و نـفتكر مع بعض إحنا كنا بنعمل إيه؟ إحنا أول حاجة قلناها إن إحنا كنا بنفتح connection، طب ما إحنا أصلًا فـاتحين connection في الـ form، ماشي؟ فـ إحنا مش هـ نفتح connection، هي مفتوحة. ماشي؟ تاني حاجة كنا بنعملها الحاجات بتاعة الـ command. الحاجات بتاعة الـ command إن إحنا كنا بـ نقول أنت هـ تفتحها أو هـ تتعامل مع أنهي connection. تاني حاجة كنا بـ نقولها له أنت هـ تعمل إيه؟ إيه؟ إيه الـ text بتاعك؟ أو إيه الـ
أه الـ text بتاعك، طيب. تالت حاجة نـقولها الـ type بتاعك، لو select أو أي حاجة، دي text، لو procedure بـ نقول له إن هي حاجة procedure، مش فاكرة أوي. طيب، بعدين بـ نحدد له أو بـ نقول له الـ execute. طيب، في خطوة كده إحنا ما عملناهاش المرة اللي فاتت، اللي هي parameters، parameters، إن إحنا هـ نحط parameters. دي هـ نعملها المرة دي، إزاي بقى؟ مش إحنا قلنا إن إحنا هـ نـ select الـ name والـ gender من الـ actors لما الـ actor ID يساوي الـ ID ال
اللي جاي من ال Combo box. طب، طب ما أنا كده بحط حاجة بتتغير، يعني مش حاجة ثابتة، مش مش text ثابت كده ما بيتغيرش، لا، هو هيبقى parameter، صح؟ فعايزين نبعت parameter لجملة الـ query، هنعملها إزاي؟ ده اللي هنعرفه دلوقتي، بس عايزين نعمل خطوات بس اللي إحنا متعودين عليها، اللي هي إيه؟ اللي إن إحنا نعمل Oracle Command. Oracle Command، نسميه مثلا CMD، ثانية واحدة.
يساوي new، أعتذر على بـُـطء الكتابة بس عشان الصوت المرة اللي فاتت كان واطي بسبب إن إن الـ mic بعيد عني. ماشي، المهم يعني، new Oracle Command، عملنا Oracle Command، بعدين عايزين نقول له إيه؟ CMD دوت هـتـتعامل مع أي connection، اللي هي كانت فوق كنا مسميينها Con، بعدين هـنقول له بقى إيه؟ جملة الـ select، اللي هي CMD دوت
هنا عشان ما تتلخبطوش بس اسمها CommandText، دي اسمها Connection عادي بس دي اسمها CommandText، والـ Type اسمه CommandType. دي جملة الـ select، ماشي؟ هـ نكتبها دلوقتي، بس عايزين نقول CMD دوت الـ type بتاعه اللي هو CommandType بيساوي CommandType دوت دي stored procedure لو procedure، ولو text بـنقول text عادي جدًا. ماشي؟ ماشي، إحنا كده حطينا الـ type، عايزين بقى نعمل إيه؟ جملة الـ select. إحنا قلنا إيه؟ هـ نـ select، أهو إحنا قلناها أصلًا، select. هـ نـ select إيه؟
هـ نـ select actor، من، الـ column قصدي اللي اسمه actor name، و gender، هو اسمه gender، منين بقى؟ منين؟ من الـ actors، من الـ table اللي اسمه أصلًا actors. أنا بكتب حروف كتيرة ليه، ماشي. لما، اللي هي where، لسه قايلينها، where إن الـ actor ID، الـ column اللي اسمه actor ID
هـ يساوي الـ ID اللي هـ يدخل لك. طيب هـ نبعت parameter إزاي؟ حاجة اسمها bind parameter، بتتعمل إزاي؟ colon، colon، بعدين نقول له ID. ماشي؟ أنا كده بعت parameter. لا أنا أنا غلطانة، أنا كده ما بعتش parameter. لا هو أنا ما بعتش parameter فعليا، أنا قلت لها إن أنتِ هـ تاخدي parameter اسمه ID. أو هـ تاخدي parameter. هل أنا اديتها parameter؟ لا لسة ما اديتهاش parameter. طب هـ اديها parameter إزاي؟ في الخطوة دي، الخطوة اللي هي parameters، sorry.
parameters. هـ نديها parameters. هـ نديها لها إزاي؟ نفس الفكرة، CMD دوت parameters دوت add. هـ تحط parameter ID، ماشي؟ هـ تحطه منين؟ من الـ select اللي أنت عملته في الـ combo box، طب ما هـ نروح للـ combo box هـ نشوف اسمه combo box 1. فـ هـ نروح كده، نقول له من اللي هـ تاخده من الـ combo box 1 دوت selected index. ماشي؟ بس الـ selected index دي
بترجع، selected item، sorry. يا رب ما تتلخبطوا، هي selected item، sorry. ماشي؟ الـ selected item دي بترجع object، أهو مكتوب أهو إن هي بترجع object. طب هو أنا بـ أحط في الـ، طب ما أنا عايزة في الـ query أحط string، مش عايزة أحط object فـ هـ نكتبها دوت to string. جميل؟ جميل. تاني بس عشان ما تتلخبطوش، هي selected item، أنا بـ select item مش بـ select index، أنا بـ select item عشان بس إيه
متتلخبطوش دي select index. المهم يعني. ماشي؟ فـ أنا كده أنا كده خلاص حطيت لها parameter. على فكرة أنا كده بعت لها parameter، لكن في الأول ما بعتلهاش parameter. طب الـ ID ده هل لازم يكون بنفس الاسم ده؟ لا الحقيقة لأ. ليه؟ أصل أنا هنا بعته parameter واحد، فـ أنا هنا بقول لها أنتِ هـ تحطي parameter من الـ combo box، ماشي؟ مش شرط، مش شرط ده يكون نفس اسم ده. أنا بقول لها أنتِ هـ تحطي parameter. أصل ده parameter واحد فـ هي هـ تروح عند الحاجة اللي محتاجة parameter وتحط الـ parameter.
طب لو أكتر من واحد؟ هـ نقوله كمان شوية. ماشي؟ ماشي، طب إحنا كده عملنا كل الخطوات ناقص خطوة واحدة بس اللي هي الـ execute. في حاجة بس عايزة أقولها، في نوعين من الـexecute. execute reader نعمل كده، execute يعني reader. ماشي؟ دي بـ تبقى مع لو هـ أقرأ من الـ database، يعني مع جملة الـ select باختصار يعني. طيب، في بقى حاجة تانية اسمها execute
non query. دي بـ تبقى مع الباقي اللي هو insert، update، delete. حلو؟ حلو. إحنا بقى بـ نعمل إيه دلوقتي؟ إحنا بـ نعمل جملة select عادي فـ هـنـستخدم الـ execute reader اللي إحنا كنا عملناه المرة اللي فاتت. طب إحنا قلنا إحنا قلنا إن الـ execute reader، الـ execute reader بـ يرجع، بـ يرجع إيه؟ بـ يرجع row. صح؟ بـ يرجع row. الـ row ده بـيب
بـ يبقى الـ يعني الـ يعني مثلا أنا عندي هنا الـ actor name انا هختار ال actor name والـ gender فهو بيرجع الـ rows بتاعة الـ two columns دول. صح كده؟ ده المرة اللي فاتت. ماشي، طب هل هنا هيرجع row؟ هل هنا هيرجع rows أو multiple row؟ الحقيقة لا هو هيرجع قيمتين، اللي هي actor name والـ gender. ليه؟ لأن أنا بقول له أنت هتختار، أنت هتختار الـ column ده والـ column ده لما الـ actor ID بيساوي ID. هل في أكتر من actor ID هـ يساوي الـ ID؟ يعني مثلا
مثلا لو لو actor الـ ID بتاعه 3 مثلا، هل في حد تاني الـ ID بتاعه 3؟ لا، فـ إحنا كده هـ أرجع بس الـ name بتاعه والـ gender بتاعه. ماشي؟ فـ إحنا قلنا طيب عايزين بقى نعمل الـ execute، sorry. عايزين نعمل الـ execute، ماشي؟ إحنا قلنا إحنا قلنا إيه؟ إحنا قلنا إن في نوعين من الـ execute، execute reader ده اللي مع الـ select، طب إحنا هنعمل جملة select فـ إحنا هـ نستخدم الـ execute reader عادي. كنا بـ نعمله إزاي
كنا بـ نرجع rows من الـ column يعني الـ column ده والـ column ده بـ نرجع الـ rows بتاعهم. فـ إحنا كنا بـ نرجع في إيه؟ كنا بـ نرجع في حاجة اسمهاOracle. Oracle data data reader، بيساوي RD، بـ نقول إن هي بتاخد الـ يعني الـ CMD، نفذ الـ جملة ال query execute reader. ماشي؟ وبـن
قول while إن هو بـ يقرأ، while إن هو بـ يقرأ اللي جاي، RD دوت read ما رجعتش سالب، ما رجعتش ما رجعتش sorry false، نفذ اللي أنا هـ أقوله لك ده، إيه بقى؟ إحنا عايزين نعمل إيه أصلًا؟ إحنا عايزين نحط في هنا وهنا الـ name والـ gender اللي راجعين. فـ هنا دي اسمها إيه؟ لو جينا نشوف هـنلاقيها اسمها text box 1. فـ عايزين نقول له في الـ text box 1، خلي الـ text بتاعها خلي الـ text بتاعها بالـ
name اللي رجع، بتساوي الـ RD of 0 ده الـ name اللي راجع، ماشي؟ بس ليه عامل error؟ لو جينا شفنا الـ error كده هـنلاقي بيقول لنا إن ده ما نقدرش نحول الـ object للـ string، فـ اللي بـ يرجع object، عايزين نحوله للـ string هـ نقول دوت to string. ليه هـ نحول لـ string؟ لأن دي text، يعني أنا هـ أحط text جوه الـ text box، طيب الـ text box التاني دوت text هـ يكون بيساوي إيه؟ RD of 1، اللي هو الـ column التاني، اللي هو
الـ gender دوت to string. وبس كده كنا نقول إن إحنا في الآخر بـ نقفل الـ RD. أو الـ data reader. طيب لو عملنا run، المفروض يشتغل. المفروض إن شاء الله، بسم الله. طيب، هـ نختار هـ نختار من هنا أي ID، أهو رجع لي الـ name بتاعه ورجع لي الـ gender. فـ ده أول task، done، الحمد لله.
طيب، الـ task 2 بقى هـ نعمل إيه؟ عايزين نحط ID جديد، وليه قلت جديد؟ علشان ده primary key فـ ما ينفعش يتكرر فـ لازم نحط ID جديد. وهـ نحط له الـ name والـ gender، ومـ ندوس على insert المفروض يـ insert فين؟ في الـ database من غير ما نروح للـ Oracle. كل ده هـ يبقى في الـ Visual Studio. نعمل ده إزاي؟ سهلة جدًا. إزاي طيب؟ إحنا لما نحط هنا ID ونحط name ونحط gender، المفروض ندوس على insert، ولما ندوس على insert
يعمل insert. فـ إحنا محتاجين هنا event، فـ هـ نجيب الـ event من هنا، click لما ندوس على الـ button، click على الـ button. فـ هـ ندوس عليه دبل كليك، وهـ يجيب لنا الـ function بتاعة الـ button click. طيب، هـ نعمل إيه؟ نفس الفكرة، نفس الخطوات بالظبط. إيه هي؟ إحنا المفروض نفتح connection، والـ connection كده كده مفتوحة، فـ إحنا خلاص الخطوة دي مش هـ نعملها. طيب، تاني حاجة، حوارات بقى الـ command، فـ نفس الفكرة، هـ نعرف Oracle
command اسمه CMD، هـ يساوي new Oracle command. إيه يا ابني؟ ماشي، new Oracle command. اكتب بقى، اكتب بقى ما تزعلنيش، اكتب، شاطر. ماشي، new Oracle command. بعدين هـ نعمل إيه؟ هـ نعمل نفس برضو الخطوات، CMD دوت connection، أنت هـ تتعامل مع أي connection.
ماشي يا جماعة هو بـ يعلق بس شوية. ماشي، connection اللي هي إيه؟ الـ Con. طيب، نـقفل بس الحاجات دي عشان ما يعلقش. ماشي، معلش. طيب، إحنا كده قلنا له أنت هـ تتعامل مع connection إيه. طيب، الـ CMD دوت كنا هـ نحط إيه تاني؟ كنا هـ نحط text، فـ هـ تبقى جملة query. خلينا نعمل كده، بعدين CMD دوت type، لسة برضه إحنا هـ نعمل
insert، فـ هي هي برضه مش procedure. فـ هنعمل برضه text. ماشي؟ بعدين هـ نعمل execute. قبل ما نعمل الـ execute، الـ execute خلينا نعمل جملة الـ query. في الـ sql مش مش عايزاكوا بصراحة تحفظوا السـ يعني هو الـ syntax بيجي يعني هي الـ syntax بتاعها سهلة بصراحة. فـ إحنا هـ نعمل إيه؟ إحنا عايزين لما ندوس على insert يعمل insert فـ هنعمل insert. insert into اسم الـ table. insert into اسم الـ table. اسمه الـ
الـ table بتاعنا Actors. هـ insert إيه؟ مم، ماشي. هـ insert إيه؟ هـ insert الحاجات أو الـ values اللي جاية لي من التلاتة text box دول. الـ combo box والـ text box ده والـ text box ده. طب هـ نعمل ده إزاي؟ برافو، هـ نبعت parameter، صح؟ هـ نبعت parameter. هـ insert إيه؟ هـ insert بس بـ نقول insert into اسم الـ table values ونحط الـ values. الـ values هـ تبقى الـ parameter، اللي هي الـ ID، والـ name، و
الـ gender. إحنا كده هـ نحط في جملة الـ select الكلام ده. Ctrl+V. ماشي؟ insert into اسم الـ table اللي هو Actors، هـ نحط الـ values اللي هي اتفقنا إن هي هـ تكون parameters، صح؟ صح. بـ نفتح قوسين، ده الـ syntax بتاع الـ SQL عادي، وعايزين بقى نحط parameters، فـ هـ نحط برضه bind parameters. أول حاجة هـ نحط ID، comma، عايزين نحط التاني فـ هـ نعمل كده برضه ونحط الـ name، وعايزين
نحط الـ gender فـ هـ نعمل كده ونحط الـ gender. جميل؟ هل أنا كده حطيت parameters؟ لا أنا ما حطيتش parameters، أنا قلت أنت هـ تاخدي parameters. طب هـ أحط الـ parameters إزاي؟ نفس الفكرة، هـ نقول CMD دوت parameters دوت add دوت add ونحط الـ parameters. طب هـ نحطهم إزاي؟ هل هـ نحطهم مع بعض؟ لا، هـ نعمل لكل parameter object من الـ CMD parameter ده. تمام؟ فـ الـ ID هـ نحط له parameter يعني هـ نحط add ID وهـ نحط له
الـ name وهـ نحط الـ digit. الـ ID هـ نجيبه منين؟ هـ نجيبه من الـ combo box. مش إحنا متفقين على كده؟ من الـ text اللي في الـ combo box، والـ name هـ نجيبه من الـ text اللي في الـ text box ده. والـ gender نفس الفكرة، هـ نجيبه من الـ text box ده. طيب. هـ نعمل ده إزاي؟ هـ نعمل لكل واحد parameter يعني parameters دوت ID. فـ أول حاجة هـ نحط ده parameter اسمه ID يا عم هـ تحط إيه؟ هـ تحط اللي في الـ combo box. combo box 1 دوت text. جميل؟ جميل، قلنا برضه
وهو لا هو تقريبًا بـ يرجع string، هو بـ يرجع string فـ خلاص، ماشي. تاني واحد، ثانية بس عشان هو بـ يعلق، تاني واحد، وتالت واحد، هـ نحط تاني واحد الـ ID، الـ name قصدي، والـ name ده هـ يكون جاي من text box الأولاني. حلو؟ ماشي، الـ ID التاني الـ sorry، الـ gender والـ parameter الـ تالت هـ يبقى في text box التانية.
text box 2 دوت text. جميل؟ جميل. طيب، إحنا قلنا إن إن يعني ده مش معبر عن ده، يعني إحنا ممكن هنا نكتب حاجة تانية، يعني ممكن هنا نكتب actor name مش مش هـ تختلف يعني. طيب، أمال هو بـ يعرف منين إن الـ ID هـ يحطه هنا وإن الـ name هـ يحطه هنا والـ gender هـ يحطه هنا؟ بالترتيب. يعني أنت حطيتهم كده بالترتيب، هو هـ يحطهم بالترتيب. هـ يحط أول حاجة الـ ID، بعدين هـ يحط الـ name، بعدين هـ يحط الـ gender. تمام؟ لو عايز الـ name الأول ممكن تـ تحط الـ name الأول وهكذا. وممكن تـ تعمل دي الأول. تمام؟ فـ هي بالترتيب.
ده الفكرة. طيب، إحنا عملنا إيه؟ حطينا parameters. ناقص إيه؟ ناقص نعمل execute. طب يلا نعمل execute. هل هل هل أنا أنا هـ أقرأ حاجة من الـ من الـ database؟ يعني أنا هل أنا محتاجة variable أخزن فيه الحاجات اللي راجعة من الـ database؟ لا. أمال أنا محتاجة إيه؟ محتاجة أعرف هل الـ row ده حصل له insert؟ لو آه، طب ماشي، إيه بقى رقم الـ row اللي حصل له insert؟ لو لأ، طيب قول لي قول لي حاجة تبين إن هي ما
ماشي insert. فـ ده معناه إن إن أو هو أصلًا في في الـ SQL الـ insert بـ ترجع رقم الـ row لو عملت insert، بـ ترجع سالب واحد لو ما حصلش insert، حصل أي error. طيب، هل أنا محتاجة execute reader؟ لا، إحنا قلنا إن إن هنا لما طالما أنا مش هـ أعمل مش هـ أرجع حاجة، طالما أنا مش محتاجة حاجة ترجع من الـ database، هـ أعمل insert أو delete أو update، يبقى أنا هـ أعمل إيه؟ execute non query.
هو معلق بس، execute non query. يلا. ماشي، أهو. فـ هـ نعمل CMD دوت دوت، يا مسهل دوت، ماشي، execute non query. دي بـ ترجع إيه؟ قلنا بـ ترجع رقم الـ row اللي حصل له insert. لو ما حصلش insert، بـ ترجع سالب واحد. يبقى معنى كده إن هي بـ ترجع int. فـ ممكن نخزنها في
int، صح كده؟ صح كده. طيب الحمد لله اشتغل. فأنا عايز أعمل إيه؟ أنا هنا حاطة ID، حاطة ID مش موجود، حاطة new ID، وحاطة name، وحاطة gender، فأنا عايزة لما أدوس على insert، آه يعمل insert في الـ database، بس كمان يحط لي الـ ID ده جوه الـ combo box، الـ list بتاعة الـ combo box، فـ هنعملها إزاي؟ هـ نقول له لو أنت عملت insert صح، يعني إيه عملت insert صح؟ يعني ما رجعتش سالب واحد، ماشي؟ فـ هـ نقول له if إن الـ RD ما رجعتش سالب واحد.
RD مش بـ -1 مش بـ سالب واحد، هـ تعمل إيه؟ هـ تحط جوه الـ combo box الـ text اللي أنت حاطته. معلش يا جماعة أنا أنا آسفة على التهنيجة دي. طيب، هـ نقول له إزاي حط جوه الـ combo box؟ هـ نقول combo box دوت items add، add داخلي على الـ items إيه بقى؟ الـ يعني أنا كنت حاطة هنا
نحط هنا رقم، فـ أنا عايزة أقول له ضيف لي الرقم ده، فـ فـ ده معناه ال combo box دوت text، الـ text اللي في الـ combo box. combo box دوت text. بس كده. ممكن نطلع message مثلا، ممكن نطلع message إن إنه إنه يعني حصل insert. طب هـ نعرض الـ message إزاي؟ فـ هـ نقول message
box، طلع message box كده دوت show، ونقول له الـ message، نقول له مثلا row is inserted. وبس كده. عايزين نقفل الـ، لا مش هـ نقفل الـ هو مش مش reader أصلًا، ده ده integer عادي، فـ مش هـ نقفل حاجة. ندوس run.
المفروض ندخل ID مش موجود، مثلا 1000، نقول مثلا آية ونقول إيه؟ F. Z  إيه؟ F. نوع فريد منه. ندوس insert، أهو row is inserted، يبقى إحنا كده عملنا insert، تمام؟ لو جينا شفنا الـ هنا هـ نلاقي الـ 1000 أهو موجود. بس. دي تاني task معايا.
طيب إحنا عملنا insert زي ما إحنا شوفنا كده، إحنا عملنا insert، أنا عايزين نعمل إيه بقى؟ عايزين نعمل update، هـ نعمل update يعني نشيل مثلًا الاسم ده ونعمل update يحصل له update في الـ database ولما أجي أعرض بياناته تاني هـ نلاقي فعلًا إن هو اتعمل له update والـ name اتغير. فـ هـ نعمل ده إزاي؟ هـ ناخد ده copy و paste. هي نفس الخطوات بالظبط. اللي هـ يختلف بس جملة الـ query، فـ ثانية
copy و  هـ نروح على الـ form ونـ update ده، الـ event بتاعه لما يبقى click، double click عليه كده ونحط هنا paste. إيه اللي هـ يتغير؟ هي هي برضه، أنا عملت command وعملت أن هو على connection دي و هـ أحط parameters و الـ type بتاعه text. إيه اللي هـ يتغير؟ جملة الـ insert دي، هـ تبقى update.
هـ ن update إزاي بقى؟ أنا عايزة إيه؟ أنا عايزة أعمل إيه؟ أنا عايزة update update على، عايزة update على الـ table اللي هو Actors. هـ update عليه إيه؟ هـ set إن الـ values دي، إن إن قصدي الـ columns دي هـ تبقى بـ value كذا، يعني الـ column اللي هو Actor name هيبقى بالـ name اللي أنا هـ أحطه.
اللي أنا هـ أعمله update، و الـ Actor, Actor Gender هـ يكون بالـ gender اللي أنا هـ أحطه. ماشي؟ where، where لما يكون الـ ID بيساوي الـ ID برضه اللي أنا هـ أعمله select. لما الـ ID يكون بيساوي الـ ID اللي أنا هـ أعمل له select. فـ إحنا هـ نكتب ده. هـ نكتب update.
اسم الـ table اللي هو Actors. هـ ن set الـ column اللي هو اسمه أعتقد بـ يتكتب كده Actor Name هيكون بيساوي إيه؟ هـ يكون بيساوي parameter، bind parameters برضه، bind parameter اللي هو name. ماشي؟ والـ gender بيساوي sorry
بيساوي برضه parameter اسمه gender. خلينا نعملها actor ماشي، مش gender خلاص، ماشي. طيب where إن الـ actor ID بيساوي إيه؟ بيساوي الـ parameter اللي اسمه ID. جميل؟ جميل، طيب أنا كنت هـ تلخبط وكنت فاكرة إن الـ name ده لازم يكون زي ده، لا هو مش شرط. مش شرط.
فـ عايزين نشيل دي. أحنا مش هـ نعمل update على الـ ID، الـ ID ثابت يعني مش هـ نغير على الـ ID أكيد. إحنا عايزين الـ ID ده نغير فيه التغييرات اللي إحنا عايزينها. فـ هـ نغير في الـ actor name وهـ نغير في الـ gender ونفس الخطوات بالظبط. لو ما رجعش سالب واحد، هي برضه الـ update بـ ترجع رقم، بـ ترجع إن هي عملت update برقم الـ row اللي عملت له update أو بـ ترجع سالب واحد لو ما عملتش update. طيب هي لو
حصل update. هل أنا هـ أض add حاجة؟ لا مش هـ أ add حاجة، هي هي أصلًا بس الـ قيمة اتغيرت. ونقول له إيه؟ row is updated مثلا. بس، ونعمل إيه؟ run. أه إحنا فاتحينها هنا. نقفلها. ماشي، عايزين بقى إيه؟ الـ ID اللي هو رقم ده، نشيل الـ اسم ده ونعمل
update، شكرًا، نشوف إيه المشكلة. أعتقد جملة الـ query برضه. أعتقد جملة الـ query. معلش على الصوت. where إن الـ actor ID بيساوي الـ ID. طب ماشي، إحنا قلنا آه إحنا هـ نعمل دول بس علشان دول اللي هـ نعمل لهم updated. طيب ما أنا برضه محتاجة أبعت ID. مش أنا محتاجة أبعت ID علشان هنا؟ فـ هي بتاخد برضه parameter ID بس مش هـ يحصل لها مش هـ يحصل لها update يعني بس محتاجة برضه parameter ID. فـ C
MD دوت parameters دوت add ID. هـ تاخده منين؟ هـ تاخده من الـ combo box. combo box دوت item  اه  sorry دوت selected item. selected item اهي. دوت to string عشان قلنا بـ ترجع إيه؟ object.
حلو؟ حلو، المفروض يشتغل. ندوس run. المفروض نختار actor ID ما، نشيل الاسم ده، نعمل update، حصل update. فـ إحنا لو جينا تاني شفنا 18، المفروض نلاقيه اتعدل، فعلًا حصل له تعديل. لو شوفناه 18، هـ نلاقيه فعلًا متعدل.
فـ كده الـ update done. طيب الـ delete، نفس الفكرة. هـ ناخد ده كله copy، إحنا واخدينه أصلًا، ونعمل إيه؟ نروح على الـ form. ندوس على الـ button. نشوف الـ event، ندوس على click double click ونيجي هنا نعمل paste. ما أعتقدش إن هو هـ يعمل paste. طيب ثانية.
نفس الفكرة برضه، إيه اللي هـ يتغير؟ جملة الـ query. جملة الـ query هـ تتغير. خلينا نشيلها. ونعمل جملة delete. إحنا عايزين ولـ نفرض إن إحنا حطينا هنا ID وطلع لنا name و gender، إحنا عايزين نشيل أصلًا ده من الـ table. عايزين نشيل الـ row كله من الـ table. فـ إحنا عايزين نـ delete row. طب هـ نـ delete الـ row إزاي؟ هـ نقول جملة الـ query برضه بسيطة. أنا عايزة أ delete.
from إيه؟ الـ actors اسم الـ table. فـ أنا هـ delete row، أنا مش هـ delete حاجة معينة فـ بـ نقول delete from actors. أنا هـ delete الـ row كله. where لما يكون الـ ID أهو actor ID actor ID بيساوي إيه؟ الـ ID اللي داخل لك. بس، إحنا كده هـ ن delete الـ row كله. طيب، هل إحنا مـدخلين دول؟ مش مـدخلين دول. بس مـدخلين الـ ID.
الـ ID برضه اللي هـ يكون في إيه؟ في الـ combo box. طيب هي برضه بـ ترجع سالب واحد لو ما عملتش delete، وبـ ترجع الرقم الـ row اللي حصل له delete. ماشي؟ فـ بـ نقول row is deleted. ومحتاجين حاجة كده option، إن إن هي تـتمسح من الـ combo box. يعني بعد ما يحصل delete، المفروض الـ ID ده يتمسح من الـ combo box. فـ طيب هـ نـ delete إزاي بقى من الـ combo box؟ هـ نكتب نكتب عايزين نـ delete من الـ combo box.
combo box فـ combo box برضه دوت عايزين نشيل من الـ items نشيل منها remove at الـ selected index combo box دوت selected index الـ index اللي عملت له اللي عملت له إيه؟ اللي عملت له delete، ماشي؟ وممكن برضه optional كده إن إحنا نصفر الـ القيم اللي جوه الـ text box 1 دوت دوت text
بيساوي إيه؟ بيساوي string فاضي. وبرضه اللي هي التانية بتاعة الـ gender، ماشي؟ اللي هي two، ونصًفَر دول، ماشي؟ نعمل run. المفروض لما أختار مثلا هو 18 إحنا ظالمينه معانا ده، 19، ماشي، وندوس delete، المفروض إنه
exception. ماشي؟ نشوف الـ exception. طيب، يا شباب أنا حاسيت إن أنا لحد ما فاهمة المشكلة من إيه، هو المشكلة إن أنا مثلًا عملت كده، هـ يديني exception ليه؟ هو بيقول child record record found، يعني إيه؟ يعني في table تاني معتمد على الـ row ده، فـ بلاش، يعني خلينا نمسح الـ الـ row اللي إحنا لسة عاملينه insert، ده ودوسنا delete، هـ نلاقي فعلًا
اللي هو حصل له delete. ماشي؟ فـ ممكن في حاجة تانية معتمدة عليه، فـ عشان كده ما كانش راضي يعمل delete. ممكن نشوف الـ slides. بس كده، أعتقد إن أنا قلت كل حاجة. دي bind variables بـ تتعمل كده زي ما قلنا. وبس كده، شكرًا لوقتكم.