آموزش عملیات CRUD در sqlite با دات نت MAUI
سلام دوستان
در این سری از آموزش های MAUI نوبت به عملیات کراد(افزودن,حذف,ویرایش و خواندن) در sqlite رسید
در این آموزش ما قصد داریم یک پروژه ساده با استفاده از sqlite و دات نت MAUI و سی شارپ بسازیم
اول از همه باید یک پروژه MAUI بسازید برای اینکار مقاله زیر را مشاهده کنید
سپس مراحل زیر را ادامه دهید:
در مرحله اول از ناگت منیج پکیجر کتاب خانه زیر را نصب کنید
sqlite-net-pcl
در ادامه باید یک کلاس با نام person برای tabel پرسون در دیتابیس ایجاد کنید
using SQLite;
namespace XFSQLiteSample
{
public class Person
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
}
}
حالا باید یک کلاس دیگر برای ساخت دیتابیس و عملیات های آن ایجاد کنید با نام Database
using System.Collections.Generic;
using System.Threading.Tasks;
using SQLite;
namespace XFSQLiteSample
{
public class Database
{
private readonly SQLiteAsyncConnection _database;
public Database(string dbPath)
{
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<Person>();
}
public Task<List<Person>> GetPeopleAsync()
{
return _database.Table<Person>().ToListAsync();
}
public Task<int> SavePersonAsync(Person person)
{
return _database.InsertAsync(person);
}
public Task<int> UpdatePersonAsync(Person person)
{
return _database.UpdateAsync(person);
}
public Task<int> DeletePersonAsync(Person person)
{
return _database.DeleteAsync(person);
}
}
}
حال باید فایل App.xaml.cs را به شکل زیر تغییر دهید
using XFSQLiteSample;
namespace MultiPlatformPhoneBook;
public partial class App : Application
{
private 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();
var database = Database;
MainPage = new AppShell();
}
}
نوبت به ساخت ظاهر صفحه MainPage.xaml می رسد باید آن را به شکل زیر ایجاد کنید
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MultiPlatformPhoneBook.MainPage">
<StackLayout Margin="20,35,20,20">
<Entry x:Name="nameEntry"
Placeholder="Enter name" />
<Button Text="Add to Database"
Clicked="OnButtonClicked" />
<Button Text="Update Database"
Clicked="Button_Clicked" />
<Button Text="Delete Database"
Clicked="Button_Clicked_1" />
<CollectionView x:Name="collectionView" SelectionMode="Single" SelectionChanged="collectionView_SelectionChanged">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Label Text="{Binding Name}"
FontSize="Medium" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</ContentPage>
حالا باید کد پشت ظاهر را در فایل MainPage.xaml.cs بنویسید
namespace MultiPlatformPhoneBook;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
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))
{
await App.Database.SavePersonAsync(new XFSQLiteSample.Person
{
Name = nameEntry.Text,
});
nameEntry.Text = string.Empty;
collectionView.ItemsSource = await App.Database.GetPeopleAsync();
}
}
XFSQLiteSample.Person lastSelection;
void collectionView_SelectionChanged(System.Object sender, SelectionChangedEventArgs e)
{
lastSelection = e.CurrentSelection[0] as XFSQLiteSample.Person;
nameEntry.Text = lastSelection.Name;
}
// Update
async void Button_Clicked(System.Object sender, System.EventArgs e)
{
if (lastSelection != null)
{
lastSelection.Name = nameEntry.Text;
await App.Database.UpdatePersonAsync(lastSelection);
collectionView.ItemsSource = await App.Database.GetPeopleAsync();
}
}
// Delete
async void Button_Clicked_1(System.Object sender, System.EventArgs e)
{
if (lastSelection != null)
{
await App.Database.DeletePersonAsync(lastSelection);
collectionView.ItemsSource = await App.Database.GetPeopleAsync();
nameEntry.Text = "";
}
}
}
اگر دوست دارید آشنایی بیشتری با دات نت MAUI پیدا کنید
آموزش ساخت ماشین حساب دات نت MAUI
پایان.