Xamarin.Forms Tutorial Database Lokal
Sebelum mencoba tutorial ini, Anda seharusnya berhasil menyelesaikan:
- Buat mulai cepat aplikasi pertama Xamarin.Forms Anda.
- Tutorial StackLayout .
- Tutorial tombol .
- Tutorial entri .
- Tutorial CollectionView .
Dalam tutorial ini, Anda akan mempelajari cara:
- Gunakan Manajer Paket NuGet untuk menambahkan SQLite.NET ke Xamarin.Forms proyek.
- Buat kelas akses data.
- Gunakan kelas akses data.
Anda akan menggunakan Visual Studio 2019, atau Visual Studio untuk Mac, untuk membuat aplikasi sederhana yang menunjukkan cara menyimpan data dalam database SQLite.NET lokal. Cuplikan layar berikut menunjukkan aplikasi akhir:
Tambahkan SQLite.NET
Untuk menyelesaikan tutorial ini, Anda harus memiliki Visual Studio 2019 (rilis terbaru), dengan pengembangan Seluler dengan beban kerja .NET terinstal. Selain itu, Anda akan memerlukan Mac berpasangan untuk membangun aplikasi tutorial di iOS. Untuk informasi tentang menginstal platform Xamarin, lihat Menginstal Xamarin. Untuk informasi tentang menyambungkan Visual Studio 2019 ke host build Mac, lihat Memasangkan ke Mac untuk pengembangan Xamarin.iOS.
Luncurkan Visual Studio, dan buat aplikasi kosong Xamarin.Forms baru bernama LocalDatabaseTutorial.
Penting
Cuplikan C# dan XAML dalam tutorial ini mengharuskan solusinya diberi nama LocalDatabaseTutorial. Menggunakan nama yang berbeda akan mengakibatkan kesalahan build saat Anda menyalin kode dari tutorial ini ke dalam solusi.
Untuk informasi selengkapnya tentang pustaka .NET Standard yang dibuat, lihat Anatomi aplikasiXamarin.Forms di Xamarin.Forms Mulai Cepat Deep Dive.
Di Penjelajah Solusi, pilih proyek LocalDatabaseTutorial, klik kanan dan pilih Kelola Paket NuGet...:
Di Manajer Paket NuGet, pilih tab Telusuri, cari paket NuGet sqlite-net-pcl, pilih, dan klik tombol Instal untuk menambahkannya ke proyek:
Catatan
Ada banyak paket NuGet dengan nama serupa. Paket yang benar memiliki atribut ini:
- Penulis: SQLite-net
- Tautan NuGet:sqlite-net-pcl
Terlepas dari nama paket, paket NuGet ini dapat digunakan dalam proyek .NET Standard.
Paket ini akan digunakan untuk menggabungkan operasi database ke dalam aplikasi.
Penting
SQLite.NET adalah pustaka pihak ketiga yang didukung dari repositori praeclarum/sqlite-net.
Bangun solusi untuk memastikan tidak ada kesalahan.
Membuat kelas akses data
Dalam latihan ini Anda akan menambahkan kelas akses data ke proyek LocalDatabaseTutorial , yang akan digunakan untuk menyimpan data tentang orang ke database.
Di Penjelajah Solusi, dalam proyek LocalDatabaseTutorial, tambahkan kelas baru bernama
Person
ke proyek. Kemudian, di Person.cs, hapus semua kode templat dan ganti dengan kode berikut:using SQLite; namespace LocalDatabaseTutorial { public class Person { [PrimaryKey, AutoIncrement] public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } } }
Kode ini mendefinisikan
Person
kelas yang akan menyimpan data tentang setiap orang dalam aplikasi. PropertiID
ditandai denganPrimaryKey
atribut danAutoIncrement
untuk memastikan bahwa setiapPerson
instans dalam database akan memiliki id unik yang disediakan oleh SQLite.NET.Di Penjelajah Solusi, dalam proyek LocalDatabaseTutorial, tambahkan kelas baru bernama
Database
ke proyek. Kemudian, di Database.cs, hapus semua kode templat dan ganti dengan kode berikut:using System.Collections.Generic; using System.Threading.Tasks; using SQLite; namespace LocalDatabaseTutorial { public class Database { readonly SQLiteAsyncConnection _database; public Database(string dbPath) { _database = new SQLiteAsyncConnection(dbPath); _database.CreateTableAsync<Person>().Wait(); } public Task<List<Person>> GetPeopleAsync() { return _database.Table<Person>().ToListAsync(); } public Task<int> SavePersonAsync(Person person) { return _database.InsertAsync(person); } } }
Kelas ini berisi kode untuk membuat database, membaca data darinya, dan menulis data ke dalamnya. Kode ini menggunakan API SQLite.NET asinkron yang memindahkan operasi database ke utas latar belakang. Selain itu,
Database
konstruktor mengambil jalur file database sebagai argumen. Jalur ini akan disediakan olehApp
kelas dalam latihan berikutnya.Di Penjelajah Solusi, dalam proyek LocalDatabaseTutorial, perluas App.xaml dan klik dua kali App.xaml.cs untuk membukanya. Kemudian, di App.xaml.cs, hapus semua kode templat dan ganti dengan kode berikut:
using System; using System.IO; using Xamarin.Forms; namespace LocalDatabaseTutorial { public partial class App : Application { static Database database; public static Database Database { get { if (database == null) { database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "people.db3")); } return database; } } public App() { InitializeComponent(); MainPage = new MainPage(); } protected override void OnStart() { // Handle when your app starts } protected override void OnSleep() { // Handle when your app sleeps } protected override void OnResume() { // Handle when your app resumes } } }
Kode ini mendefinisikan
Database
properti yang membuat instans baruDatabase
sebagai singleton. Jalur file lokal dan nama file, yang mewakili tempat menyimpan database, diteruskan sebagai argumen keDatabase
konstruktor kelas.Penting
Keuntungan mengekspos database sebagai singleton adalah bahwa koneksi database tunggal dibuat yang tetap terbuka saat aplikasi berjalan, oleh karena itu menghindari pengeluaran membuka dan menutup file database setiap kali operasi database dilakukan.
Bangun solusi untuk memastikan tidak ada kesalahan.
Menggunakan kelas akses data
Dalam latihan ini Anda akan membuat antarmuka pengguna untuk menggunakan kelas akses data yang dibuat sebelumnya.
Di Penjelajah Solusi, dalam proyek LocalDatabaseTutorial, klik dua kali MainPage.xaml untuk membukanya. Kemudian, di MainPage.xaml, hapus semua kode templat dan ganti dengan kode berikut:
<?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="LocalDatabaseTutorial.MainPage"> <StackLayout Margin="20,35,20,20"> <Entry x:Name="nameEntry" Placeholder="Enter name" /> <Entry x:Name="ageEntry" Placeholder="Enter age" /> <Button Text="Add to Database" Clicked="OnButtonClicked" /> <CollectionView x:Name="collectionView"> <CollectionView.ItemTemplate> <DataTemplate> <StackLayout> <Label Text="{Binding Name}" FontSize="Medium" /> <Label Text="{Binding Age}" TextColor="Silver" FontSize="Small" /> </StackLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> </StackLayout> </ContentPage>
Kode ini secara deklaratif mendefinisikan antarmuka pengguna untuk halaman, yang terdiri dari dua
Entry
instans,Button
, danCollectionView
dalamStackLayout
. Masing-masingEntry
memiliki kumpulan propertinyaPlaceholder
, yang menentukan teks tempat penampung yang ditampilkan sebelum input pengguna. MengaturButton
peristiwanyaClicked
ke penanganan aktivitas bernamaOnButtonClicked
yang akan dibuat di langkah berikutnya. mengaturCollectionView
propertinyaItemTemplate
keDataTemplate
, yang menggunakan danStackLayout
duaLabel
objek untuk menentukan tampilan setiap baris diCollectionView
. ObjekLabel
mengikat propertinyaText
keName
properti danAge
masing-masing dari setiapPerson
objek.Selain itu,
Entry
instans danCollectionView
memiliki nama yang ditentukan denganx:Name
atribut . Ini memungkinkan file code-behind untuk mengakses objek ini menggunakan nama yang ditetapkan.Di Penjelajah Solusi, dalam proyek LocalDatabaseTutorial, perluas MainPage.xaml dan klik dua kali MainPage.xaml.cs untuk membukanya. Kemudian, di MainPage.xaml.cs, tambahkan penimpaan
OnAppearing
danOnButtonClicked
penanganan aktivitas ke kelas:protected override async void OnAppearing() { base.OnAppearing(); collectionView.ItemsSource = await App.Database.GetPeopleAsync(); } async void OnButtonClicked(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(nameEntry.Text) && !string.IsNullOrWhiteSpace(ageEntry.Text)) { await App.Database.SavePersonAsync(new Person { Name = nameEntry.Text, Age = int.Parse(ageEntry.Text) }); nameEntry.Text = ageEntry.Text = string.Empty; collectionView.ItemsSource = await App.Database.GetPeopleAsync(); } }
Metode ini
OnAppearing
mengisi dengan data apa pun yangCollectionView
disimpan dalam database. MetodeOnButtonClicked
, yang dijalankan ketikaButton
diketuk, menyimpan data yang dimasukkan ke dalam database sebelum menghapus keduaEntry
instans, dan menyegarkan data diCollectionView
.Catatan
Penimpaan
OnAppearing
metode dijalankan setelah ditataContentPage
, tetapi tepat sebelum terlihat. Oleh karena itu, ini adalah tempat yang baik untuk mengatur konten Xamarin.Forms tampilan.Di toolbar Visual Studio, tekan tombol Mulai (tombol segitiga yang mirip tombol Putar) untuk meluncurkan aplikasi di dalam simulator iOS jarak jauh yang Anda pilih atau emulator Android.
Masukkan beberapa item data, ketuk
Button
untuk setiap item data. Ini akan menyimpan data ke database, dan mengisiCollectionView
ulang dengan semua data database:Di Visual Studio, hentikan aplikasi.
Untuk informasi selengkapnya database lokal di Xamarin.Forms, lihat Xamarin.Forms Database Lokal (panduan)
Selamat!
Selamat atas penyelesaian tutorial ini, di mana Anda belajar cara:
- Gunakan Manajer Paket NuGet untuk menambahkan SQLite.NET ke Xamarin.Forms proyek.
- Buat kelas akses data.
- Gunakan kelas akses data.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang dasar-dasar pembuatan aplikasi seluler dengan Xamarin.Forms, lanjutkan ke tutorial Layanan Web.
Tautan terkait
Memiliki masalah dengan bagian ini? Jika iya, berikan umpan balik kepada kami agar kami dapat meningkatkan bagian ini.