
execSQL, אפשר להשתמש בפונקציות מובנות של המחלקה SQLiteDatabase. בשיעור ממירים את ארבע פעולות ה-CRUD של האפליקציה אליהן.products, את הפרמטר null column hack (כאן null, כי לא מוסיפים שורה ריקה) ואובייקט ContentValues. ב-ContentValues, שהוא אוסף של זוגות מפתח וערך, מכניסים עם put את העמודות name ו-price. הפונקציה מחזירה long עם ה-ID שנוסף, ולכן לא צריך קורסור ולא צריך לסגור אותו.null. הפרמטר האחרון הוא whereArgs.id = ? ולתת מערך מחרוזות שמחליף את סימני השאלה. כשיש כמה תנאים זה נוח יותר משרשור, ועם תנאי אחד אפשר להישאר בשיטה הראשונה.db.query, שמקבלת פרמטרים לסינון, חיבור וקיבוץ. כאן מעבירים רק את הטבלה ו-null לשאר, ומקבלים קורסור של כל הטבלה.הטקסט המלא של הדקות הראשונות בהרצאה «חיבור למסד נתונים SQLite - חלק 8» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כאשר ביצענו את ה-Insert, Update, Delete ו-Select, מה שעשינו זה השתמשנו בשאילתות SQL בכדי לייצר הוראות שאותן שלחנו לדאטאבייס, וכך אמרנו לדאטאבייס מה אנחנו רוצים לבצע.
אבל יש לנו built-in functions, כל מיני פונקציות שקיימות בתוך המחלקה SQLite Database, שמאפשרות לנו לבצע Insert, Update, Delete ו-Select.
לפעמים אולי יותר קל להשתמש בהן במקום לייצר שאילתות sql בעצמכם אז בואו נראה איך אנחנו עובדים איתן אז בואו ניגש לכל אחת מהפונקציות שבנינו insert update delete ו-select ונשנה אותה כך שבמקום לייצר שאילתת sql אנחנו משתמשים ב-buildin functions שלהם אז אין לנו פה צורך בשאילתת הsql ולכן אין לנו צורך גם ב-exec sql הזאת
יש לנו צורך ב-db.insert אנחנו רואים שמוכנות לנו כבר פונקציה, פונקציות לביצוע insert, update, delete ו-select. אז insert אומרת לנו קודם כל איזה טבלה אתם רוצים להכניס אליה מידע.
אז אנחנו רוצים לתת את טבלת הפרודקטס, ולאחר מכן יש לנו איזה האמת פרמטר מוזר כזה שנקרא null column hack, ואם תקראו מה בדיוק הפרמטר הזה מציין, תראו שהוא אומר לכם שאם אתם מוסיפים שורה ריקה, אז אתם צריכים לתת אילו עמודות אתם רוצים שיהיה בהם נעל, משהו קצת הזוי לדעתי, אנחנו כרגע נשים פה נעל, אין לנו צורך להשתמש במשתנה הזה,
כי גם ככה אנחנו לא רוצים להוסיף שורה ריקה. והדבר הבא שאנחנו רוצים זה content values. content values זה משתנה שמכיל בתוכו אוסף של key values, והאוסף הזה מתאר איזה עמודות אתם רוצים להכניס אליהם אילו ערכים.
זאת אומרת ששנייה לפני זה בואו נכין אובייקט מטיפוס content values. בואו נייצר פה content values כזה חדש ואז ניגש ל-content values ופשוט על ידי פונקציית put נכניס את המידע.
עבור name אנחנו רוצים את product get name content values put עבור price אנחנו רוצים את product get price אנחנו ככה שמים את השמות של העמודות שאליהם אנחנו רוצים להכניס מידע ומה המידע שאנחנו רוצים להכניס אליהם ואז אנחנו פשוט נותנים את ה-content values הזה לפונקציית insert.
בואו רק נעשה את הנבנה את ה-db get writable דייטאבייס כמה שיותר קרוב להוצאה לפועל של הפקודה ומשהו נוסף מגניב שיש בפונקציית האינסרט זה שהיא מחזירה לנו כבר את ה-ID שהתווסף אם תסתכלו על החתימה תראו שהיא מחזירה משתנה מסוג לונג אז אנחנו כבר כאן יכולים לפתוח את האינט ID שלנו ולקבל את המשתנה הזה אנחנו לא צריכים את הקורסור ואת המוב נקסט
ואת הגט אינט ואת כל אלה, אפשר להוריד אותם. אני מוציא את הקורסור, לא צריך לסגור אותו. ואנחנו יכולים כבר להסתפק בזה. בואו נמחק את כל מה שלא צריך מפה למעשה בצורה כזאת.
נוסיף כאן נקודה פסיק רק. והנה יש לנו כבר פונקציית add product, מוכנה עם עבודה עם פונקציית insert build-in ובשום מקום לא ציינו כאן שאילתת sql אז לפעמים זה קצת יותר נוח לשימוש לא תמיד יכול להיות שבמקרים מסוימים פונקציית sql או שאילתת sql זה משהו שהוא הרבה יותר גמיש ונוח לשימוש אבל לצורך הדוגמאות
בואו נמיר את כל מה שעשינו לשיטה הזאת גם באפדייט אנחנו רוצים לבנות בדיוק אובייקט כזה, בואו נשים אותו פה, אנחנו לא צריכים את שאילתת ה-SQL, ניפטר ממנה, אנחנו לא רוצים את Exec SQL, אנחנו רוצים את פונקציית Update, שגם כאן אומרת לנו, אוקיי, מה השם של הטבלה?
Products, יכול להיות לנו הרי הרבה טבלאות, אנחנו רוצים להכניס את זה ל-Products. איזה values אתם רוצים להכניס? זה יהיה אובייקט ה-content values שבנינו ואיזה שאילתת where אתם רוצים שאני אשלב בשאילתה.
הפונקציות האלה שאנחנו קוראים להן מייצרות שאילתת sql והן שולחות את השאילתה לדאטאבייס. אז בשאילתת הsql של update יכול להיות שיש לנו where.
אם אין לנו אז אנחנו שולחים null. אם יש לנו אנחנו צריכים לשלוח בדיוק את החלק של ה-where. החלק של ה-Ware שלנו היה ID שווה ופה היה את ה-ID המדויק שאנחנו רוצים עבורו לבצע Update.
הפרמטר הבא בתור זה איזשהו WearArgs שכרגע זה Null וכבר נבין מה זה. אז הנה יש לנו פה את היכולת לבצע Update עבור טבלת Products.
אלה הערכים שאנחנו רוצים להכניס רק לרשומה שעונה על התנאי הזה. או על הרשומות שעונות על התא הזה, כרגע זאת רשומה אחת, ואין לנו פה עוד פרמטרים נוספים.
פונקציה update אפשר לקרוא לה גם בשיטה כזאת, שימו לב. כאן אנחנו יכולים לשים סימן שאלה, ופה אנחנו נותנים רשימה של ערכים שיחליפו