로컬 SQLite.NET 데이터베이스에 저장된 데이터 | 아이포 테크노랩

이 블로그에서는 crud 작업을 통해 Xamarin.Forms에서 SQLite 로컬 데이터베이스를 사용하는 방법에 대해 설명합니다. 이 문서에서는 SQLite.Net을 공유 코드로 사용하여 정보를 로컬 데이터베이스에 저장하고 추출하는 방법을 설명합니다.

SQLite 수단



SQLite는 애플리케이션 소프트웨어에서 널리 사용되는 로컬 데이터베이스 저장소입니다. 이것은 아마도 오늘날 가장 널리 사용되는 데이터베이스 엔진이며 특히 많은 브라우저, 운영 체제 및 임베디드 시스템에서 사용됩니다. SQLite 데이터베이스 엔진을 사용하면 Xamarin.Forms 애플리케이션에서 데이터 개체를 공유 코드로 로드하고 백업할 수 있습니다.

Crud Operation과 함께 Xamarin 형식의 SQLite 데이터베이스를 사용하는 방법은 무엇입니까?



Crud 작업과 함께 Xamarin 형식의 SQLite 데이터베이스 사용에 대한 다음 단계를 따르십시오.

1단계: Xamarin 프로젝트를 생성합니다.
Xamarin 양식 프로젝트를 클릭하여 새 프로젝트를 만듭니다.



그런 다음 요구 사항에 따라 빈 템플릿과 플랫폼을 선택합니다.



2 단계:

프로젝트를 생성한 후 솔루션 탐색기에서 프로젝트 이름을 클릭한 다음 마우스 오른쪽 버튼을 클릭하고 NuGet 패키지 관리를 선택하여 패키지를 설치합니다.

이름이 같은 NuGet 패키지가 여러 개 있습니다. 올바른 패키지에는 다음 속성이 적용됩니다.

아이디: sqlite-net-pcl

작성자: SQLite-net

소유자: praeclarum



3단계:

패키지를 설치한 후 프로젝트에 세 개의 폴더를 만들고 Model, View 및 ViewModel로 이름을 지정해야 합니다.

자세히 보기: 데이터베이스 백업 전략 계획 - 무시할 수 없는 7가지 필수 항목



4단계:

시스템에서 데이터베이스 파일 대상을 지정합니다. 이 사양은 App.xaml.cs 파일에서 선언해야 합니다.

파일 이름: App.xaml.cs

암호:


namespace CrudSqliteDatabase
{
public partial class App : Application
{
static SQLiteHelper Database;
public static SQLiteHelper SQLiteDb
{
get
{
if (Database == null)
{
Database = new 
//Define the destination for store the data   
SQLiteHelper(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "XamarinStudentSQLite.db3"));
}
return Database;
}
}
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
protected override void OnStart()
{
}
protected override void OnSleep()
{
}
protected override void OnResume()
{
}
}
}



5단계:

그런 다음 보기 폴더에 보기 페이지를 만들고 MainPage.xaml과 같은 이름을 지정합니다.

파일 이름: MainPage.xaml

암호:


<!--?xml version="1.0" encoding="utf-8”?-->
<contentpage x:class="CrudSqliteDatabase.MainPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<stacklayout>
<stacklayout>
<stacklayout horizontaloptions="Center" verticaloptions="Start">
<entry placeholder="Enter STudent ID" x:name="txtStudentId"></entry>
<entry placeholder="Enter Student Name" x:name="txtStuName"></entry>
<stacklayout horizontaloptions="CenterAndExpand" orientation="Horizontal"><button clicked="btnStudentAdd_Clicked" text="Insert" widthrequest="200" x:name="btnStudentAdd"></button><button clicked="btnStudentData_Clicked" text="Details" widthrequest="200" x:name="btnStudentData">
<stacklayout horizontaloptions="CenterAndExpand" orientation="Horizontal">
</stacklayout></button><button clicked="btnStudentUpdate_Clicked" text="Update" widthrequest="200" x:name="btnStudentUpdate"></button><button clicked="btnStudentDelete_Clicked" text="Delete" widthrequest="200" x:name="btnStudentDelete">
<listview x:name="lstStudentData">
<listview.itemtemplate>
<datatemplate>
<viewcell>
<stacklayout horizontaloptions="CenterAndExpand" verticaloptions="CenterAndExpand">
<grid>
<grid.columndefinitions>
<columndefinition>
<columndefinition>
</columndefinition></columndefinition></grid.columndefinitions>
</grid>
</stacklayout>
</viewcell>
</datatemplate>
</listview.itemtemplate>
</listview></button></stacklayout></stacklayout></stacklayout></stacklayout></contentpage>



6단계:

모든 메서드는 사용자 측에서 데이터를 바인딩하고 가져오기 위해 Mainpage.xaml.cs 파일에서 구현됩니다.

파일 이름: MainPage.xaml.cs

암호:


namespace CrudSqliteDatabase
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected async override void OnAppearing()
{
base.OnAppearing();
//Get All Student Data 
var StudentList = await App.SQLiteDb.GetItemsAsync();
if (StudentList != null)
{
lstStudentData.ItemsSource = StudentList;
}
}
private async void btnStudentData_Clicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtStudentId.Text))
{
//Get Student Details
var student = await App.SQLiteDb.GetItemAsync(Convert.ToInt32(txtStudentId.Text));
 if (student != null)
{
txtStuName.Text = student.StudentName;
//Display all The Student name in alert box
}
}
else
{
//Display the alert for Please enter the Student ID.
}
}
private async void btnStudentUpdate_Clicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtStudentId.Text))
{
Student student = new Student()
{
StudentId = Convert.ToInt32(txtStudentId.Text),
StudentName = txtStuName.Text
};
//Update Student  
await App.SQLiteDb.SaveItemAsync(student);
txtStudentId.Text = string.Empty;
txtStuName.Text = string.Empty;
//Data updated Successfully to show the message in alert
//Get All Students  
var StudentList = await App.SQLiteDb.GetItemsAsync();
 if (StudentList != null)
{
lstStudentData.ItemsSource =StudentList;
}
}
else
{
//Display the alert for Please enter the Student ID.
}
}
private async void btnStudentDelete_Clicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtStudentId.Text))
{
//Get Student  
var student = await App.SQLiteDb.GetItemAsync(Convert.ToInt32(txtStudentId.Text));
if (student != null)
{
//Delete Student  
await App.SQLiteDb.DeleteItemAsync(student);
txtStudentId.Text = string.Empty;
//Data Deleted Successfully to show the message in alert
//Get All Student  
var StudentList = await App.SQLiteDb.GetItemsAsync();
if (StudentList != null)
{
lstStudentData.ItemsSource = StudentList;
}
}
}
else
{
//Display the alert for Please enter the Student ID.
}
}
private async void btnStudentAdd_Clicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtStuName.Text))
{
Student student = new Student()
{
StudentName = txtStuName.Text
};
//Add New Student  
await App.SQLiteDb.SaveItemAsync(student);
txtStuName.Text = string.Empty;
//Display the message for Data Inserted Successfully. 
//Get All Student  
var StudentList = await App.SQLiteDb.GetItemsAsync();
if (StudentList != null)
{
lstStudentData.ItemsSource =StudentList;
}
}
  else
{
//Display the alert for Please enter the Student ID.            }
}
}



7단계:

로컬 데이터베이스에 데이터를 저장하기 위해 이 클래스에서 삽입, 업데이트, 세부 정보 및 삭제 메서드 구현을 위한 SqliteHelper 클래스를 만듭니다. 이 클래스는 ViewModel 폴더에 저장됩니다.

Dot Net 개발 회사를 고용할 계획입니까? 귀하의 검색은 여기서 끝납니다.



파일 이름: SqliteHelper.cs

암호:


namespace CrudSqliteDatabase
{
public class SQLiteHelper
{
SQLiteAsyncConnection database;
public SQLiteHelper(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<student>().Wait();
}
//Insert and Update new record  
public Task<int> SaveItemAsync(Student student)
{
if (student.StudentId != 0)
{
return database.UpdateAsync(student);
}
else
{
return database.InsertAsync(student);
}
}
//Delete  
public Task<int> DeleteItemAsync(Student student)
{
return database.DeleteAsync(student);
}
//Read All the students name
public Task<list<student>> GetItemsAsync()
{
return database.Table<student>().ToListAsync();
}
//Read Student data
public Task<student> GetItemAsync(int StudentId)
{
return database.Table<student>().Where(i => i.StudentId == StudentId).FirstOrDefaultAsync();
}
}
}  
</student></student></student></list<student></int></int></student>



8단계:

Model 폴더에 학생 데이터에 대한 모델 클래스를 만들고 이름을 Student.cs로 지정합니다.

파일 이름: Student.cs

암호:


namespace CrudSqliteDatabase.Model
{
public class Student
{
[PrimaryKey, AutoIncrement]
public int StudentId { get; set; }
public string StudentName { get; set; }
}
}



9단계:

프로젝트를 실행하고 아래 출력을 확인하십시오.



결론



이 블로그에서는 xamarin.forms의 SQLite 데이터베이스를 사용한 crud 작업에 대해 논의했습니다. SQLite는 애플리케이션 소프트웨어에서 널리 사용되는 로컬 데이터베이스 저장소입니다. 이 소프트웨어는 여러 번 네트워크 트래픽 문제 및 신호 없음 등과 같은 기타 문제 때문에 더 유용합니다. 이 모든 문제는 이 소프트웨어를 사용하여 해결됩니다. 예제와 함께 MVVM 패턴을 사용하여 SQLite 데이터베이스에 대한 모든 정보를 설명했습니다.

좋은 웹페이지 즐겨찾기