Menggunakan SQLite secara asinkron
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 ditunjukkanDropTableAsync
: Menghilangkan tabel yang berkorelasi dengan kelas yang ditunjukkanGetAsync
: Mendapatkan rekaman dalam tabel yang berkorelasi dengan kelas yang ditunjukkan, dan cocok dengan kunci utama yang diteruskan ke konstruktorInsertAsync
: Menyisipkan rekaman baru dengan menggunakan item yang diteruskan ke konstruktorUpdateAsync
: Memperbarui rekaman yang ada dengan menggunakan item yang diteruskan ke konstruktorDeleteAsync
: Menghapus rekaman dalam tabel yang memetakan ke kelas yang ditunjukkan, dan cocok dengan kunci utama yang diteruskan ke konstruktorQueryAsync
: Menjalankan kueri SQL langsung dan mengembalikan objekExecuteAsync
: Menjalankan kueri SQL langsung dan mengembalikan jumlah baris yang terpengaruhExecuteScalarAsync
: Menjalankan kueri SQL langsung dan mengembalikan satu hasilToListAsync
: 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.