PracticU

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

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › חיבור למסד נתונים SQLite - חלק 7
מילון מושגים:
SQLite - מסד נתונים יחסי קל משקל ששמור בקובץ בודד, נפוץ ביישומים מקומיים ובאפליקציות מובייל.
CRUD - ראשי התיבות של ארבע הפעולות הבסיסיות על נתונים: יצירה, קריאה, עדכון ומחיקה.
ArrayList - מבנה נתונים של רשימה דינמית שגודלה משתנה, הנפוץ בשפות כמו Java ו-C#.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.

חיבור למסד נתונים SQLite - חלק 7
הפעולה האחרונה מבין ארבע פעולות ה-CRUD היא קריאה. בשיעור בונים פונקציה שמחזירה את כל המוצרים מהמסד, כדי שהאפליקציה תציג אותם כשהיא עולה.
השלבים העיקריים
1. הפונקציה: getAllProducts במחלקה Database, שמחזירה ArrayList<Product>.
2. פתיחה לקריאה: getReadableDatabase(), כי רק קוראים.
3. השאילתה: rawQuery("select * from products", null). הכוכבית אומרת כל העמודות. אפשר לבחור עמודות מסוימות, למשל select name או name, price, ואפשר לסנן רשומות עם where.
4. הלולאה על ה-Cursor: while (cursor.moveToNext()). הפונקציה גם מזיזה את המצביע שורה קדימה (בפעם הראשונה אל השורה הראשונה, כי הוא מתחיל לפניה) וגם מחזירה false כשנגמרו הרשומות.
5. אינדקסי העמודות: לפני הלולאה, פעם אחת, מקבלים עם cursor.getColumnIndex("id"), "name" ו-"price". אין להניח שהעמודות ממוקמות בסדר מסוים, כי הוא עשוי להשתנות.
6. קריאת השורה: בתוך הלולאה getInt(idIndex), getString(nameIndex) ו-getDouble(priceIndex). בונים Product עם הבנאי שמקבל id, name ו-price ומוסיפים לרשימה.
7. סגירה והחזרה: סוגרים את ה-Cursor ואת החיבור, ומחזירים את הרשימה.
8. ב-onCreate: במקום ליצור ArrayList ריק, קוראים ל-database.getAllProducts().
בדיקה
האפליקציה עולה ומציגה את המידע הקודם מהמסד. אחרי הוספת sweet banana, מחיקת apple ועדכון המוצר השני ל-yellow peach במחיר 3.9, סגירת האפליקציה והרצה מחדש, מוצג המצב העדכני. ה-id 2 חסר, כי המוצר נמחק קודם.
כעת האפליקציה מסוגלת ליצור, לקרוא, לעדכן ולמחוק מידע במסד SQLite ולהציג אותו בכל הרצה.
השיעור הבא בקורס: חיבור למסד נתונים SQLite - חלק 8

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

  1. 00:00

    פעולת Read לטעינת כל המוצרים

  2. 01:01

    getReadableDatabase ו-rawQuery

  3. 01:41

    בחירת עמודות ותנאי WHERE

  4. 02:16

    קבלת Cursor מהשאילתה

  5. 03:06

    לולאה עם moveToNext

  6. 04:01

    קריאת ערכים לפי מיקום עמודה

  7. 04:58

    איתור עמודות עם getColumnIndex

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

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

  1. 00:01

    הפעולה האחרונה שנשארה לנו בארבעת פעולות ה-קרוד, קריאייט ריד, אפדייט דיליט, זאת פעולת ה-ריד.

  2. 00:09

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

  3. 00:26

    הפונקציה הזאת תחזיר לנו הריי-ליסט של פרודקט, נקרא לה get all products ושאילתת הsql תהיה כזאת שמחזירה לנו את כל המוצרים. טוב, בואו נבנה כאן arraylist של product, נקרא לו product, נבנה אובייקט arraylist חדש, ניקש ונבנה sqlite למעשה, sqlite database db אבל הפעם get readable database אנחנו לא רוצים לכתוב אנחנו רק

  4. 01:13

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

  5. 01:42

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

  6. 01:52

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

  7. 02:07

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

  8. 02:23

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

  9. 02:48

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

  10. 03:20

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

  11. 03:35

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

  12. 03:48

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

  13. 04:06

    ואז בתוך ה-while אנחנו פשוט רוצים לקרוא את הנתונים. איך אנחנו קוראים את הנתונים? מה שאנחנו עושים זה יוצרים בואו ניקח int id כי אנחנו רוצים גם את ה-id גם את ה-name וגם את ה-price פונים לקורסור ואומרים לו מה אנחנו רוצים, גט אינט או גט סטרינג או כל דבר.

  14. 04:26

    עכשיו, כל פונקציה כזאת של גט מקבלת את המיקום של העמודה. אז אפשר להגיד ש-id יהיה מיקום 0, name יהיה מיקום 1 ו-price יהיה מיקום 2, כי ככה בעצם רשמנו את זה פה, ה-id היה הראשון, ה-name היה השני, ה-price שלישי.

  15. 04:46

    אבל זה בהחלט לא נכון להניח את זה. א', אנחנו לא באמת יודעים שזה המצב וב' אולי בהמשך נשנה את המיקומים שלהם.

  16. 04:56

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

  17. 05:15

    מהו האינדקס המיקום של הרשומה או ליתר דיוק העמודה של ה-id, זה יהיה cursor.getcolumnindex ואז הוא שואל אותנו איזה בדיוק עמודה אתם רוצים, זה יהיה ה-id, אחלה, בואו נשכפל את זה ל-name index ופה אנחנו כמובן רושמים name ובואו נשכפל את זה ל-price index ואנחנו רוצים את עמודת

  18. 05:45

    ה-price ועכשיו אנחנו יכולים

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

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

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

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

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

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

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