Menggunakan SQLite secara asinkron

Selesai

Jika Anda menjalankan kueri pada database dengan cara yang sinkron, kueri dapat menyebabkan masalah performa dan aplikasi yang tidak responsif. SQLite-net memiliki API asinkron yang dapat Anda gunakan untuk menjaga aplikasi Anda tetap responsif.

Di unit ini, Anda akan mempelajari cara menggunakan SQLite-net asynchronous API untuk memastikan bahwa aplikasi Anda tetap sangat responsif.

Memahami kueri asinkron

Hingga saat ini, semua yang telah Anda lakukan telah dijalankan pada rangkaian UI. Namun, untuk membangun aplikasi seluler yang sangat responsif, Anda ingin melakukan hal yang sedikit berbeda. Jika Anda menjalankan operasi database pada utas UI, operasi dapat menyebabkan UI membeku jika operasi membutuhkan waktu lama untuk diselesaikan.

Untuk mengatasi masalah ini, SQLite-net menyertakan API asinkron melalui SQLiteAsyncConnection kelas . Misalnya, untuk membuat tabel secara asinkron, Anda dapat menggunakan CreateTableAsync metode :

var conn = new SQLiteAsyncConnection(dbPath);
await conn.CreateTableAsync<User>();

Lakukan operasi asinkron dengan SQLite-net

Kelas ini SQLiteAsyncConnection mengekspos operasi serupa sebagai mitra sinkronnya. Namun, operasi ini semuanya berbasis tugas untuk penggunaan latar belakang.

Operasi asinkron umum yang tersedia meliputi:

  • CreateTableAsync: Membuat tabel berdasarkan kelas yang ditunjukkan

  • DropTableAsync: Menghilangkan tabel yang berkorelasi dengan kelas yang ditunjukkan

  • GetAsync: Mendapatkan rekaman dalam tabel yang berkorelasi dengan kelas yang ditunjukkan, dan cocok dengan kunci utama yang diteruskan ke konstruktor

  • InsertAsync: Menyisipkan rekaman baru dengan menggunakan item yang diteruskan ke konstruktor

  • UpdateAsync: Memperbarui rekaman yang ada dengan menggunakan item yang diteruskan ke konstruktor

  • DeleteAsync: Menghapus rekaman dalam tabel yang memetakan ke kelas yang ditunjukkan, dan cocok dengan kunci utama yang diteruskan ke konstruktor

  • QueryAsync: Menjalankan kueri SQL langsung dan mengembalikan objek

  • ExecuteAsync: Menjalankan kueri SQL langsung dan mengembalikan jumlah baris yang terpengaruh

  • ExecuteScalarAsync: Menjalankan kueri SQL langsung dan mengembalikan satu hasil

  • ToListAsync: Menjalankan metode Tabel secara asinkron

Kode berikut menunjukkan contoh cara menggunakan ToListAsync metode untuk mengambil rekaman secara asinkron:

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);
}

Dalam contoh ini, ToListAsync metode mengambil semua pengguna dari database secara asinkron. Jika Anda menggunakan metode ini, Antarmuka pengguna Anda tetap responsif meskipun terdapat sekumpulan besar pengguna dalam database.