השתמש בפונקציה SQLite באופן אסינכרוני
אם אתה מפעיל שאילתות על מסד נתונים באופן סינכרוני, הדבר עלול להוביל לבעיות ביצועים ולאפליקציות שלא מגיבות. SQLite-net כולל API אסינכרוני שניתן להשתמש בו כדי להבטיח שהיישום שלך מגיב.
ביחידה זו, תלמד כיצד להשתמש ב- API אסינכרוני SQLite-net כדי להבטיח שהיישום שלך יישאר מגיב בצורה מהירה.
הבנת שאילתות אסינכרוניות
עד לנקודה זו, ביצעת את כל פעולות מסד הנתונים בהליך המשנה של ממשק המשתמש. עם זאת, כדי לבנות אפליקציה למכשירים ניידים עם יכולת תגובה גבוהה, ברצונך לבצע פעולות באופן שונה מעט. אם אתה מפעיל פעולות מסד נתונים בהליך המשנה של ממשק המשתמש, הדבר עלול לגרום לממשק המשתמש להקפיא אם הפעולה נמשכת זמן רב.
כדי לפתור בעיה זו, SQLite-net כולל API אסינכרוני באמצעות SQLiteAsyncConnection המחלקה. לדוגמה, כדי ליצור טבלה באופן אסינכרוני, באפשרותך להשתמש CreateTableAsync הבאה:
var conn = new SQLiteAsyncConnection(dbPath);
await conn.CreateTableAsync<User>();
ביצוע פעולות אסינכרוניות באמצעות SQLite-net
מחלקת SQLiteAsyncConnection חושפת פעולות דומות כפעולות המקבילות הסינכרוניות שלה. עם זאת, כל הפעולות מבוססות על משימות לשימוש ברקע.
הפעולות אסינכרוניות הזמינות הנפוצות כוללות:
CreateTableAsync: יצירת טבלה המבוססת על המחלקה שצויןDropTableAsync: שחרור הטבלה המתאם לכיתה שצויןGetAsync: מקבל את הרשומה בטבלה המתאם למחלקה שצוין, ותואם למפתח הראשי שהועבר לבנאיInsertAsync: הוספת רשומה חדשה באמצעות הפריט שהועבר לבנאיUpdateAsync: עדכון רשומה קיימת באמצעות הפריט שהועבר לבנאיDeleteAsync: מחיקת הרשומה בטבלה שממפה למחלקה שצוין ותואם למפתח הראשי שהועבר לבנאיQueryAsync: הפעלת שאילתת SQL ישירה והחזרת אובייקטExecuteAsync: הפעלת שאילתת SQL ישירה והחזרת מספר השורות המושפעותExecuteScalarAsync: הפעלת שאילתת SQL ישירה והחזרת התוצאה ה יחידהToListAsync: ביצוע פעולת השירות Table באופן אסינכרוני
הקוד הבא מציג דוגמה של אופן השימוש בפעולת השירות ToListAsync לאחזור רשומות באופן אסינכרוני:
SQLiteAsyncConnection conn;
ObservableCollection<User> userList; // Bound to UI
...
public async Task AddAllUsersAsync()
{
List<User> users = await conn.Table<User>().ToListAsync();
// Must be on UI thread here!
foreach (var u in users)
userList.Add(u);
}
בדוגמה זו, ToListAsync הבאה את כל המשתמשים ממסד הנתונים באופן אסינכרוני. אם אתה משתמש בשיטה זו, ממשק המשתמש שלך נשאר מגיב גם אם יש קבוצה גדולה של משתמשים במסד הנתונים.