Menggunakan database SQLite di aplikasi UWP
Anda dapat menggunakan SQLite untuk menyimpan dan mengambil data dalam database ringan di perangkat pengguna. Panduan ini menunjukkan caranya.
Beberapa manfaat menggunakan SQLite untuk penyimpanan lokal
✔️ SQLite ringan dan mandiri. Ini adalah pustaka kode tanpa dependensi lain. Tidak ada yang perlu dikonfigurasi.
✔️ Tidak ada server database. Klien dan server berjalan dalam proses yang sama.
✔️ SQLite berada di domain publik sehingga Anda dapat dengan bebas menggunakan dan mendistribusikannya dengan aplikasi Anda.
✔️ SQLite berfungsi di seluruh platform dan arsitektur.
Anda dapat membaca selengkapnya tentang SQLite di sini.
Pilih lapisan abstraksi
Kami menyarankan agar Anda menggunakan Entity Framework Core atau pustaka SQLite sumber terbuka dibuat oleh Microsoft.
Inti Kerangka Kerja Entitas
Entity Framework (EF) adalah pemeta relasional objek yang dapat Anda gunakan untuk bekerja dengan data relasional dengan menggunakan objek khusus domain. Jika Anda telah menggunakan kerangka kerja ini untuk bekerja dengan data di aplikasi .NET lainnya, Anda dapat memigrasikan kode tersebut ke aplikasi UWP dan akan berfungsi dengan perubahan yang sesuai pada string koneksi.
Untuk mencobanya, lihat Memulai dengan EF Core.
Pustaka SQLite
Pustaka Microsoft.Data.Sqlite mengimplementasikan antarmuka di namespace System.Data.Common. Microsoft secara aktif mempertahankan implementasi ini, dan mereka menyediakan pembungkus intuitif di sekitar SQLite API asli tingkat rendah.
Sisa panduan ini membantu Anda menggunakan pustaka ini.
Menyiapkan solusi Anda untuk menggunakan pustaka Microsoft.Data.SQlite
Kita akan mulai dengan proyek UWP dasar, lalu menginstal paket Nuget yang sesuai.
Nota
Pastikan Anda menginstal Microsoft.Data.Sqlite' package and not 'Microsoft.Data.Sqlite.Core
. Paket ini akan menginstal Microsoft.Data.Sqlite.Core
sebagai dependensi.
Semua versi Windows yang didukung mendukung SQLite, sehingga aplikasi Anda tidak perlu mengemas pustaka SQLite. Sebagai gantinya, aplikasi Anda dapat menggunakan versi SQLite yang diinstal dengan Windows. Ini membantu Anda dalam beberapa cara.
✔️ Mengurangi ukuran aplikasi Anda karena Anda tidak perlu mengunduh biner SQLite, lalu mengemasnya sebagai bagian dari aplikasi Anda.
✔️ Mencegah kebutuhan Anda untuk memperbarui versi terbaru dari aplikasi Anda kepada pengguna jika SQLite menerbitkan perbaikan penting pada bug dan kerentanan keamanan dalam SQLite. Versi Windows SQLite dikelola oleh Microsoft dalam koordinasi dengan SQLite.org.
✔️ Waktu pemuatan aplikasi berpotensi lebih cepat karena kemungkinan besar, versi SDK SQLite sudah akan dimuat ke dalam memori.
Mari kita mulai dengan menambahkan kelas ke proyek UWP Anda bernama DataAccess. Anda dapat menggunakan proyek pustaka kelas .NET Standard untuk berisi kode akses data Anda, tetapi kami tidak akan menggunakannya dalam contoh kami.
Klik kanan solusi, lalu klik Kelola Paket NuGet untuk Solusi.
Pada titik ini, Anda memiliki pilihan. Anda dapat menggunakan versi SQLite yang disertakan dengan Windows atau jika Anda memiliki alasan untuk menggunakan versi SQLite tertentu, Anda dapat menyertakan pustaka SQLite dalam paket Anda. Kita akan menggunakan versi SQLite yang disertakan dengan Windows.
Pilih tab
Menambahkan dan mengambil data dalam database SQLite
Kami akan melakukan hal-hal ini:
1️⃣ Siapkan kelas akses data.
2️⃣ Inisialisasi database SQLite.
3️⃣ Sisipkan data ke dalam database SQLite.
4️⃣ Mengambil data dari database SQLite.
5️⃣ Tambahkan antarmuka pengguna dasar.
Menyiapkan kelas akses data
Buka kelas DataAccess
di proyek Anda dan buat kelas itu statis.
Nota
Meskipun contoh kami akan menempatkan kode akses data di kelas statis, ini hanyalah pilihan desain dan sepenuhnya opsional.
public static class DataAccess
{
}
Tambahkan pernyataan penggunaan berikut ke bagian atas file ini.
using Microsoft.Data.Sqlite;
using System.Collections.Generic;
Menginisialisasi database SQLite
Tambahkan metode ke kelas DataAccess
yang menginisialisasi database SQLite.
public async static void InitializeDatabase()
{
await ApplicationData.Current.LocalFolder.CreateFileAsync("sqliteSample.db", CreationCollisionOption.OpenIfExists);
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
using (SqliteConnection db =
new SqliteConnection($"Filename={dbpath}"))
{
db.Open();
String tableCommand = "CREATE TABLE IF NOT " +
"EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " +
"Text_Entry NVARCHAR(2048) NULL)";
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
createTable.ExecuteReader();
}
}
Kode ini membuat database SQLite dan menyimpannya di penyimpanan data lokal aplikasi.
Dalam contoh ini, kami memberi nama database
Di konstruktor file App.xaml.cs proyek UWP Anda, panggil metod InitializeDatabase
kelas DataAccess
.
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
DataAccess.InitializeDatabase();
}
Menyisipkan data ke dalam database SQLite
Tambahkan metode ke kelas DataAccess
yang menyisipkan data ke dalam database SQLite. Kode ini menggunakan parameter dalam kueri untuk mencegah serangan injeksi SQL.
public static void AddData(string inputText)
{
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
using (SqliteConnection db =
new SqliteConnection($"Filename={dbpath}"))
{
SQLitePCL.Batteries.Init();
db.Open();
SqliteCommand insertCommand = new SqliteCommand();
insertCommand.Connection = db;
// Use parameterized query to prevent SQL injection attacks
insertCommand.CommandText = "INSERT INTO MyTable VALUES (NULL, @Entry);";
insertCommand.Parameters.AddWithValue("@Entry", inputText);
insertCommand.ExecuteReader();
}
}
Mengambil data dari database SQLite
Tambahkan metode yang mendapatkan baris data dari database SQLite.
public static List<String> GetData()
{
List<String> entries = new List<string>();
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
using (SqliteConnection db =
new SqliteConnection($"Filename={dbpath}"))
{
db.Open();
SqliteCommand selectCommand = new SqliteCommand
("SELECT Text_Entry from MyTable", db);
SqliteDataReader query = selectCommand.ExecuteReader();
while (query.Read())
{
entries.Add(query.GetString(0));
}
}
return entries;
}
Metode Baca true
jika ada baris yang tersisa, jika tidak, maka mengembalikan false
.
Metode GetString mengembalikan nilai kolom yang ditentukan sebagai string. Ini menerima nilai bilangan bulat yang mewakili ordinal kolom berbasis nol dari data yang Anda inginkan. Anda dapat menggunakan metode serupa seperti GetDataTime dan GetBoolean. Pilih metode berdasarkan jenis data apa yang dikandung kolom.
Parameter ordinal tidak sepenting dalam contoh ini karena kita memilih semua entri dalam satu kolom. Namun, jika beberapa kolom adalah bagian dari kueri Anda, gunakan nilai ordinal untuk mendapatkan kolom tempat Anda ingin menarik data.
Menambahkan antarmuka pengguna dasar
Dalam file
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBox Name="Input_Box"></TextBox>
<Button Click="AddData">Add</Button>
<ListView Name="Output">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Grid>
Antarmuka pengguna dasar ini memberi pengguna TextBox
yang dapat mereka gunakan untuk mengetik string yang akan kita tambahkan ke database SQLite. Kami akan menyambungkan Button
di UI ini ke penanganan aktivitas yang akan mengambil data dari database SQLite lalu menampilkan data tersebut di ListView
.
Dalam file MainPage.xaml.cs, tambahkan handler berikut. Ini adalah metode yang kami kaitkan dengan peristiwa Click
dari Button
di antarmuka pengguna (UI).
private void AddData(object sender, RoutedEventArgs e)
{
DataAccess.AddData(Input_Box.Text);
Output.ItemsSource = DataAccess.GetData();
}
Kami juga ingin memastikan bahwa data yang ada dimuat saat aplikasi dimulai. Tambahkan baris kode ke konstruktor MainPage
untuk memanggil GetData()
.
public MainPage()
{
this.InitializeComponent();
Output.ItemsSource = DataAccess.GetData();
}
Itu saja. Jelajahi Microsoft.Data.Sqlite untuk melihat hal lain yang dapat Anda lakukan dengan database SQLite Anda. Lihat tautan di bawah ini untuk mempelajari cara lain menggunakan data di aplikasi UWP Anda.
Langkah berikutnya
Menyambungkan aplikasi Anda langsung ke database SQL Server
Lihat Menggunakan database SQL Server di aplikasi UWP.
Berbagi kode antara aplikasi yang berbeda di berbagai platform
Lihat Berbagi kode antara desktop UWP dan.