PracticU

חיבור למסד נתונים SQLite - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › חיבור למסד נתונים SQLite - חלק 2
מילון מושגים:
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
SQLite - מסד נתונים יחסי קל משקל ששמור בקובץ בודד, נפוץ ביישומים מקומיים ובאפליקציות מובייל.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

חיבור למסד נתונים SQLite - חלק 2
לפני שמוסיפים תמיכה במסד נתונים SQLite, ההרצאה סוקרת אפליקציית ניהול מוצרים שעובדת כרגע רק בזיכרון, כדי להבין את המבנה שלה לפני חיבור הדטהבייס.
מבנה האפליקציה
1. המסך הראשי: MainActivity מציג כותרת עם מספר המוצרים ורשימה ב-ListView, כשכל שורה מציגה קוד מוצר, שם, מחיר ושני כפתורים לעדכון ולמחיקה.
2. הוספת מוצר: AddProductActivity מאפשרת להזין שם ומחיר (הקוד נוצר אוטומטית). כפתור Cancel סוגר את המסך בלי להחזיר נתונים, וכפתור Add אוסף את הנתונים לאובייקט Product ומחזיר אותו למסך הראשי.
3. עדכון מוצר: UpdateProductActivity מקבלת את המוצר לעדכון, מציגה את הנתונים הקיימים לעריכה, ובלחיצה על Update מחזירה אובייקט מעודכן.
4. מחלקת Product ו-ID Generator: כל מוצר כולל קוד, שם ומחיר. בלי דטהבייס, קוד המוצר נוצר על ידי ID Generator. עם דטהבייס זה יתבצע אוטומטית על ידי עמודת auto-increment.
5. ProductsAdapter: ממלא את ה-Layout של כל שורה (ID, Name, Price) ומטפל בלחיצות על כפתורי העדכון והמחיקה באמצעות ממשק (interface) עם שתי פונקציות, updateProduct ו-deleteProduct, שמקבלות את מיקום המוצר ברשימה.
6. MainActivity - הוספה: לחיצה על Add Product בתפריט פותחת את מסך ההוספה עם startActivityForResult. בחזרה, ב-onActivityResult, נבדק קוד הבקשה ותוצאת ה-Result, והמוצר החדש נוסף למערך המקומי ומרפרש את הרשימה והכותרת.
7. MainActivity - עדכון ומחיקה: עדכון פותח את מסך העדכון עם המוצר הנבחר ומחליף אותו ברשימה המקומית לפי ה-ID בחזרה. מחיקה מציגה דיאלוג אישור ולאחר אישור מסירה את המוצר מהרשימה ומרפרשת את הכותרת (רק הוספה ומחיקה משנות את מספר המוצרים המוצג).
8. הדגמה: הוספו שלושה מוצרים, מוצר אחד עודכן (שם ומחיר), ומוצר נוסף נמחק עם אישור בדיאלוג.
שימו לב
כל המידע קיים רק בזיכרון - סגירת האפליקציה ופתיחתה מחדש מאבדת את כל המוצרים, כי שום דבר לא נשמר עדיין לדטהבייס או לקבצים.
לאחר ההרצאה ברור איך האפליקציה בנויה כדי להוסיף בהרצאות הבאות פעולות insert, update, delete ו-select אל מול מסד נתונים SQLite.
השיעור הבא בקורס: חיבור למסד נתונים SQLite - חלק 3

פרקי ההרצאה: חיבור למסד נתונים SQLite - חלק 2

  1. 00:00

    אפליקציית ניהול מוצרים כבסיס

  2. 00:37

    מסך ראשי עם רשימת מוצרים

  3. 01:18

    Activities להוספה ועדכון מוצר

  4. 02:38

    המחלקה Product ו-ID Generator

  5. 03:57

    ProductsAdapter ולחצני עדכון ומחיקה

  6. 05:35

    קוד ה-Main Activity

  7. 07:13

    תפריט הוספה ו-onActivityResult

תמלול ההרצאה: חיבור למסד נתונים SQLite - חלק 2

הטקסט המלא של הדקות הראשונות בהרצאה «חיבור למסד נתונים SQLite - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    בסדרת הסרטונים הבאים אנחנו הולכים לעבוד עם מסד הנתונים sqlite ואנחנו הולכים לראות איך אנחנו יכולים לבצע insert, update, delete וכמובן select על מידע.

  2. 00:14

    אנחנו הולכים לעשות את זה על ידי איזושהי אפליקציה דומה לאפליקציה שעבדנו עליה כשלמדנו על קבצים, שמנהלת לנו מוצרים.

  3. 00:23

    בסרטון הזה אנחנו הולכים רק לראות איך האפליקציה הזאת בנויה, כאשר כרגע היא לא מתעסקת בכלל עם שום מסד נתונים וגם לא עם קבצים ועליה אנחנו הולכים להוסיף קוד כך שישמור את כל המידע לדאטאבייס.

  4. 00:41

    אז בואו נעבור ונראה מה יש לנו באפליקציה. ראשית יש לנו את המיין אקטיביטי שמה שיש במיין אקטיביטי זה איזושהי כותרת לגבי כמה מוצרים יש לנו ורשימת המוצרים שמוצגים על ידי רכיב list view.

  5. 00:59

    כל אחד מהמוצרים מתואר על ידי layout שמכיל קוד מוצר, שם מוצר, מחיר ושני לחצנים שמאפשרים לעדכן את המוצר ולמחוק את המוצר.

  6. 01:18

    כל אחד מאלה זה בעצם מופיע לגבי כל אחד מהמוצרים ברשימה שלנו. לצורך הוספת מוצר יש לנו layout ו-activity שמאפשרים להוסיף מוצר חדש.

  7. 01:32

    כאשר אני מוסיף מוצר אז יש לי רק את השם שלו ואת המחיר שלו. אנחנו רוצים שהקוד שלו יתווסף אוטומטית על ידי ה-database. יש לנו פה לחצן לביטול ולחצן להוספה.

  8. 01:45

    כאשר אנחנו רוצים לעדכן מוצר יש לנו layout המאפשר לבצע update, כמובן שייך ל-activity של עדכון מוצר, ואנחנו רוצים להציג פה את המידע הקודם לגבי המוצר ולאפשר למשתמש לערוך כמובן רק את השם ואת המחיר.

  9. 02:06

    שוב יש לנו פה לחצן cancel או לחצן update. הקוד שקיים בתוך האקטיביטי של הוספת מוצר add product activity ופשוט מאוד לחצן בוא נתחיל עם cancel מבצע finish ולכן לא מחזיר שום דבר ל-main activity והלחצן שמבצע את ההוספה לוקח את המידע מהתיבות, מוסיף אותו ל-object product ומחזיר אותו ל-main activity.

  10. 02:38

    יש לנו כמובן מחלקה שמתארת מוצר אחד, למוצר יש קוד, יש שם ויש מחיר. בנוסף כרגע בגלל שאין לנו דאטאבייס וזה נלקח מאחת הדוגמאות הקודמות יש לנו משהו שנקרא ID Generator זאת אומרת כל מוצר שאנחנו מוסיפים אז המערכת מייצרת לו איזשהו ID. כמובן שאם אנחנו משתמשים עם דאטאבייס התכונה הזאת תהיה בילד אין בתוך הדאטאבייס

  11. 03:08

    על ידי עמודה שתוגדר כ-Auto Increment. מה אנחנו עושים ב-Update Product Activity? Update Product Activity קודם כל היא מקבלת ממי שקורא לה, כלומר מהמיין אקטיביטי את המוצר שאנחנו רוצים לעדכן.

  12. 03:27

    שמה את המידע שלו על תיבות הקלט שהמשתמש יכול לעדכן. המשתמש יכול לבטל את הפעולה ולא קורה דבר, והוא יכול ללחוץ על לחצן Update, ואז אנחנו לוקחים את הנתונים החדשים, מוסיפים אותם לאובייקט הפרודקט ומחזירים את אובייקט הפרודקט בחזרה.

  13. 03:48

    המחלקה MyApp מכילה קונטקסט כללי ברמת האפליקציה, שאנחנו יכולים להשתמש איתו בכל מיני מקומות. קיימת לנו המחלקה Product Adapter שהתפקיד שלה זה סך הכל להכניס את המידע לגבי כל אחד מהמוצרים והמידע הולך להיכנס ל-Item Product Layout מה שראינו כאן.

  14. 04:15

    אז Product Adapter מה שהיא עושה זה פשוט מאתרת את רכיבי ה-UI של ה-Layout כמובן קודם כל מנפחת את ה-Layout הזה, מאתרת את ה-id, name ו-price ומכניסה לתוכם את הערכים של המוצר שאותו אנחנו הולכים להציג.

  15. 04:34

    בנוסף יש לנו שני לחצנים, אז מה שקורה באדפטר הזה זה שיש לנו כאן איזשהו אינטרפייס שמכיל שתי פונקציות update product ו- delete product.

  16. 04:50

    כל אחת מהן מקבלת את המיקום של המוצר ברשימה שאנחנו רואים, וברגע שלוחצים על הלחצן Update כל מה שאנחנו עושים זה פשוט קוראים לו פונקציה של ה-interface Update Product.

  17. 05:05

    כאשר היוזר לוחץ על הלחצן Delete אנחנו קוראים לו פונקציה Delete Product. שני הלחצנים האלה מופיעים ברשימה ליד כל אחד מהמוצרים ולכן אנחנו הולכים לקבל את הלחיצות האלה ב-Main Activity ולדעת בדיוק מה המיקום של המוצר שאותו אנחנו רוצים לערוך או למחוק ככה אנחנו יכולים לערוך או למחוק מוצרים ספציפיים שאנחנו רואים ברשימה

  18. 05:35

    הדבר האחרון שנשאר לנו זה המיין אקטיביטי במיין אקטיביטי יש לנו קודם כל שני קבועים עבור הוספת מוצר ועבור עדכון מוצר יש לנו אריי ליסט שמחזיק את כל המוצרים יש לנו את הפרודקט אדפטר שראינו עכשיו יש לנו את הליסט ויו ואת הכותרת טקסט ויו קאונט.

  19. 06:01

    כאן אנחנו מאתרים את רכיבי ה-UI, הליסט ויו והכותרת, יוצרים אובייקט חדש מה-raylist שהוא כמובן בהתחלה ריק לגמרי, יוצרים אובייקט מהאדפטר, שימו לב שהוא מבקש מאיתנו את הקונטקסט, את הרשימה ואיזה אובייקט מממש את האינטרפייס שבנינו ואנחנו רואים שהמיין אקטיביטי מממשת את האינטרפייס.

  20. 06:32

    לאחר מכן אנחנו מקשרים את האדפטר עם הליסט ומציגים את הכותרת על ידי פונקציה שזה התפקיד שלה להציג בכותרת כמה מוצרים כרגע קיימים.

  21. 06:45

    בואו רגע נסתכל על הפונקציה הזאת, היא נמצאת פה למטה והיא אומרת דבר כזה: אני בודקת רק את ה-ArrayList. אם אין לי בכלל מוצרים ב-ArrayList אני מציגה לכם כותרת No Products.

  22. 06:58

    אם יש לי מוצר אחד ויחיד אני אציג לכם one product בכותרת. אם יש יותר אני אציג לכם count products, לדוגמה שלושה מוצרים. זה בעצם פונקציה שאנחנו קוראים לה מכל מיני מקומות בכדי להציג כמה מוצרים יש בכל רגע.

  23. 07:17

    יש לנו כאן תפריט שבתפריט יש add product ו-exit. דרך התפריט המשתמש יכול להוסיף מוצר. בפונקציה הזאת אנחנו בעצם מציגים את התפריט, ובקוד של הקליק של התפריט של menu item add product אנחנו רוצים רק ליצור אובייקט אינטנט בשביל להציג את האקטיביטי של הוספת מוצר ומפעילים את האקטיביטי הזאת כמובן על ידי start activity for result בכדי לקבל בחזרה את הפרטים

  24. 07:54

    של המוצר החדש. מה אנחנו עושים עם המוצר החדש? את זה אנחנו יכולים לראות בפונקציה onActivityResult. בפונקציה אנחנו בודקים האם בעצם ה-request code זה request code add product, ושימו לב שזה ה-request code ששלחנו כאשר היוזר לחץ על התפריט להוספת מוצר, request code add product.

  25. 08:20

    אז אם זה המצב והכל נגמר כמו שצריך,

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: חיבור למסד נתונים SQLite - חלק 1

ההרצאה הבאה: חיבור למסד נתונים SQLite - חלק 3

הרצאות קשורות מקורסים אחרים

  • חיבור אפליקציה למסד נתונים
  • קורס PHP - הרצאה 10 - חיבור למסד נתונים
  • חיבור למסד נתונים - Connection String
  • יצירת אפליקציה עם חיבור למסד נתונים

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון