השתמש בפונקציה 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 הבאה את כל המשתמשים ממסד הנתונים באופן אסינכרוני. אם אתה משתמש בשיטה זו, ממשק המשתמש שלך נשאר מגיב גם אם יש קבוצה גדולה של משתמשים במסד הנתונים.