
Database את הפונקציה updateProduct ומחברים אותה לאפליקציה.updateProduct מקבלת Product. הפעם האובייקט חייב לכלול id שהמסד נתן לו, בנוסף ל-name ול-price.String.format: update products set name = '%s', price = %f where id = %d, עם הערכים מ-getName, getPrice ו-getId.where id רק המוצר המבוקש מתעדכן.getWritableDatabase(), execSQL עם השאילתה, ובסוף סגירת החיבור.onActivityResult, במקרה של request code של עדכון מוצר ו-result code אוקיי, קוראים קודם ל-database.updateProduct(product) ואחר כך מחפשים את המוצר ברשימה המקומית ומעדכנים אותה, ולבסוף מרעננים את הרשימה.id שלה.הטקסט המלא של הדקות הראשונות בהרצאה «חיבור למסד נתונים SQLite - חלק 5» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שכתבנו את הקוד לצורך הוספה של מוצר חדש לדאטאבייס, בואו נבצע עדכון מוצר קיים. אנחנו ניגשים ל-Database, זאת המחלקה שבנינו, ואנחנו רוצים להוסיף עוד פונקציה public void update product.
הפונקציה הזאת מקבלת אובייקט product, כמובן שהפעם אובייקט הפרודקט הזה צריך להכיל ID כפי שהדאטאבייס נתן לו, לאשר פונקציית add product, האובייקט הזה לא קיבל ID, הוא קיבל רק name ו-price, אנחנו פה מקבלים ID, name ו-price בתוך האובייקט, ואנחנו רוצים לייצר שאילתה, שאילתת sql, שתאפשר לעדכן את המוצר הזה.
אז בואו נשתמש ב-string format, בכדי שיהיה ממש יותר פשוט לבצע את השאילתה, ואנחנו רוצים לכתוב שאילתה שמתחילה ב-update product, שם הטבלה set name שווה גרש גרש ובתוך אחוז s פסיק price שווה ויש לנו אחוז f כי זה floating number זאת אומרת ששאילתת הsql אומרת לנו שאנחנו רוצים לבצע עדכון עבור טבלת המוצרים אנחנו רוצים שהשם
יהיה בדיוק מה שמופיע פה ושהprice יהיה בדיוק מה שמופיע פה אבל אנחנו צריכים להוסיף פה where ID שווה ל-1% ID כי אם אנחנו לא נעשה את זה אז העדכון יתבצע עבור כל המוצרים.
אז כאן העדכון מתבצע רק עבור ה-ID הזה שאנחנו הולכים לפרט. ואנחנו רוצים להכניס את product get name, אנחנו רוצים את product get price ולבסוף את product get ID. והנה מוכנה השאילתא.
כעת אנחנו רוצים שוב פעם להשיג את Writable Database, את ה-DB הזה, אז בואו נעתיק את השורה ונדביק אותה כאן. אחרי שיש לנו את ה-Writable Database אנחנו יכולים לקרוא ל-exec sql ולהוציא לפועל את השאילתה.
לבסוף אנחנו רוצים to close the connection והנה סיימנו לבנות שאילתה ולהוציא אותה לפועל שמה שהיא עושה היא מבצעת למוצר קיים ומה שאנחנו רוצים לעשות זה פשוט לקרוא לפונקציה הזאת בדיוק בקוד שמבצע את העדכון זה יהיה ב-Main Activity וברגע שיוזר מבצע Update אז מוצגת לו ה-Activity לגבי Update והפרטים של המוצר נשלחים
ברגע שהוא מבצע אישור הוא חוזר בחזרה ל-on-activity-result ואז ה-else הזה צריך להתבצע. ה-request code היה ה-request code update product, זה בדיוק מה ששלחנו פה, request code update product, וכמובן אם היוזר לוחץ על אוקיי אז אנחנו גם מקבלים בחזרה את ה-result code שזה אוקיי וזה
אומר שהוא רוצה לבצע את העדכון.