Menghubungkan Windows Phone 8.1 App dan SQLite

Karena bosan dengan web development, saya mencoba untuk mengembangkan sebuah aplikasi untuk Windows Phone 8.1 menggunakan Visual Studio Express 2015. Salah satu permasalahan terbesar yang saya temukan adalah Windows Phone 8.1 ternyata secara resmi sudah berhenti mendukung penggunaan database SQL Server CE (Compact Edition) yang umum digunakan pada versi pendahulunya (WP 8 dan WP 7). Lebih buruk lagi, dukungan resmi terhadap SQLite pun tidak ada, sehingga hanya meninggalkan pilihan plaintext fileĀ untuk penyimpanan data.

Namun sepertinya saya diselamatkan oleh sebuah library yang dibuat Frank Krueger yaitu sqlite-net yang memungkinkan penggunaan SQLite sebagai database app Windows Phone. Cara instalasi sqlite-net:

  1. Buka Tools (alt+T) > NuGet Package Manager > Package Manager Console
  2. Pada console, jalankan baris berikut
    Install-Package sqlite-net
  3. Pada Solution Explorer, klik kanan References > Add Reference
  4. Pada menu kiri, pilih Windows Phone 8.1 > Extensions, pastikan SQLite for “Windows Phone 8.1” dalam status aktif
  5. Perhatikan pada Solution Explorer, akan ada 2 file baru yaitu SQLite.cs dan SQLiteAsync.cs

Kali ini kita akan menggunakan SQLite.cs sebagai penghubung app dengan SQLite, penggunaan fungsi-fungsi async (asynchronous) akan dijelaskan di kesempatan lain. Sebelum dapat menggunakan database SQLite, lakukan langkah-langkah berikut:

  1. Persiapkan file database SQLite yang akan digunakan (contoh: db.sqlite)
  2. Buat folder baru di bawah project Anda (contoh: DB)
  3. Klik kanan folder yang baru dibuat, Add > Existing Item, arahkan pada file SQLite Anda
  4. Klik kanan file db.sqlite di Solution Explorer > Properties
  5. Pada panel properties pastikan “Build Action” berisi “Content” dan “Copy to Output Directory” berisi”Copy always”
  6. Salin code berikut pada class yang akan menggunakan koneksi database
    public static async void copyDatabase()
    {
    bool isDatabaseExisting = false;
    try
    {
    StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("db.sqlite");
    isDatabaseExisting = true;
    }
    catch
    {
    isDatabaseExisting = false;
    if (!isDatabaseExisting)
    {
    StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("DB\\db.sqlite");
    await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
    }
    }

    public static SQLiteConnection getConnection()
    {
    return new SQLiteConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, "db.sqlite"));
    }
  7. Pastikan copyDatabase() dipanggil sebelum menggunakan database
  8. Untuk mendapatkan suatu tabel, buatlah entity class untuk tabel tersebut, misalnya users
  9. Gunakan pemanggilan seperti berikut, dilanjutkan dengan query yang diinginkan (Where, GroupBy, …)
    getConnection().Table<users>().Where(...)
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Tinggalkan komentar