انجام عملیات CRUD با استفاده از پایگاه داده SQLite
دوشنبه 20 دی 1395در این مقاله ، نحوه انجام عملیات افزودن یک کاربر، ویرایش ، حذف و همچنین مشاهده ی کامل جزئیات مربوط به کاربر را پیاده سازی می کنیم. برای این کار از پایگاه داده SQLite استفاده می کنیم.
SQLite چیست؟
پایگاه داده ی SQLite متدهایی برای درج، ویرایش ، حذف و همچنین مشاهده ی جزئیات داده ها دارد و تمامی وظایف مربوط به مدیریت پایگاه داده را مدیریت می کند.
بیایید شروع کنیم.
مرحله 1:
از مسیرVisual Studio ->New Project->Templates-> Visual C#->Android->Blank App یک پروژه جدید ایجاد کنید.
برای پروژه ای که ساخته اید، یک نام و محل ذخیره سازی انتخاب کنید.
مرحله2 : سپس به مسیر Solution Explorer-> Project Name-> References بروید، کلیک راست کرده و گزینه Manage NuGet Packages را انتخاب کنید. در پنجره جدیدی که ظاهر می شود، SQLite را جستجو کنید و سپس SQLite-net Packages را انتخاب کنید.
مرحله 3 : حالا نیاز داریم تا یک جدول پایگاه داده ایجاد کنیم تا به وسیله آن بتوانیم یک data layer class داشته باشیم. برای این کار به مسیر Solution Explorer-> Project Name بروید، بر روی نام پروژه کلیک راست کنید و در پنجره جدیدی که ظاهر می شود، گزینه ی Class را انتخاب کنید، نام آن را StudentTable.cs بگذارید و بر روی دکمه Add کلیک کنید.
مرحله 4 : گام بعدی این است که به مسیر Solution Explorer-> Project Name->Resources->layout->Main.axml بروید و مطابق شکل زیر ، چهار دکمه در آن قرار بدهید.
مرحله 5 : سپس در فایل StudentTable.cs ، ستون های مورد نیاز مان را به صورت زیر ایجاد می کنیم :
[PrimaryKey, AutoIncrement, Column("_Id")]
public int id { get; set; } // AutoIncrement and set primarykey
[MaxLength(25)]
public string StudentName { get; set; }
[MaxLength(25)]
public string NickName { get; set; }
[MaxLength(25)]
public string Dept { get; set; }
[MaxLength(25)]
public string Place { get; set; }
مرحله 6 : سپس به فایل MainActivity.cs بروید و فضای نام های زیر را در آن اضافه کنید. ابتدا باید پایگاه داده را ایجاد کنیم . برای این کار بعد از متد OnCreate() یک متد دیگر به نام CreateDB() به صورت زیر می سازیم .
using System.IO;
namespace SQLite
{
[Activity(Label = "SQLite", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
Button btninsert;
Button btnselect;
Button btnupdate;
Button btndelete;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
btninsert = FindViewById<Button>(Resource.Id.btninsert);
btnselect = FindViewById<Button>(Resource.Id.btnselect);
btnupdate = FindViewById<Button>(Resource.Id.btnupdate);
btndelete = FindViewById<Button>(Resource.Id.btndelete);
CreateDB(); //Calling DB Creation method
btninsert.Click += delegate { StartActivity(typeof(InsertActivity)); };
btnselect.Click += delegate { StartActivity(typeof(SelectActivity)); };
btnupdate.Click += delegate { StartActivity(typeof(UpdateActivity)); };
btndelete.Click += delegate { StartActivity(typeof(DeleteActivity)); };
}
public string CreateDB()
{
var output = "";
output += "Creating Databse if it doesnt exists";
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"); //Create New Database
var db = new SQLiteConnection(dpPath);
output += "\n Database Created....";
return output;
}
}
}
در اینجا، نام پایگاه داده را “student.db3” گذاشته ایم .
INSERT (درج یک داده)
مرحله 7 :
بعد از اینکار، یک صفحه اصلی ایجاد کنید. یک Layout جدید برای انجام عملیات درج ایجاد کنید. سپس، به مسیر
Solution Explorer-> Project Name->Layout بروید، بر روی آن کلیک راست کنید و در پنجره جدیدی که باز می شود، Android Layout را انتخاب کرده و نام آن را Insert.axml بگذارید.
مرحله 8 : سپس به مسیر Solution Explorer-> Project Name بروید، بر روی نام پروژه کلیک راست کنید و در پنجره جدیدی که باز می شود، گزینه ی Activity را انتخاب کنید. نام آن را InsertActivity بگذارید و بر روی دکمه ی Add کلیک کنید.
مرحله 9 :
سپس به مسیر Solution Explorer-> Project Name->Resources->layout->Insert.axml بروید و بخش Design View را باز کنید.
مرحله 10 : به مسیر Solution Explorer-> Project Name->InsertActivity.cs بروید و کد زیر را در آن اضافه کنید.
Namespace: using System.IO;
public class InsertActivity : Activity
{
Button btncreate;
EditText txtname;
EditText txtnickname;
EditText txtdept;
EditText txtplace;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.Insert);
txtname = FindViewById<EditText>(Resource.Id.txtname);
txtnickname = FindViewById<EditText>(Resource.Id.txtnickname);
txtdept = FindViewById<EditText>(Resource.Id.txtdept);
txtplace = FindViewById<EditText>(Resource.Id.txtplace);
btncreate = FindViewById<Button>(Resource.Id.btnsave);
btncreate.Click += Btncreate_Click;
}
private void Btncreate_Click(object sender, EventArgs e)
{
try
{
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3");
var db = new SQLiteConnection(dpPath);
db.CreateTable<StudentTable>();
StudentTable tbl = new StudentTable();
tbl.StudentName = txtname.Text;
tbl.NickName = txtnickname.Text;
tbl.Dept = txtdept.Text;
tbl.Place = txtplace.Text;
db.Insert(tbl);
clear();
Toast.MakeText(this, "Record Added Successfully...,", ToastLength.Short).Show();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
}
}
void clear()
{
txtname.Text = "";
txtnickname.Text = "";
txtdept.Text = "";
txtplace.Text = "";
}
}
مرحله 11 : سپس پروژه را Build و سپس Run کنید تا خروجی این قسمت را ببینید.
SELECT (مشاهده جزئیات)
دوباره یک layout برای انجام عملیات select ایجاد کنید. به فایل Layout بروید بر روی آن کلیک راست کنید و Android Layout را انتخاب کرده و نام آن را Select.axml بگذارید و سپس بر روی دکمه Add کلیک کنید.
مرحله 13 : حالا به مسیر Solution Explorer-> Project Name بروید، بر روی نام پروژه کلیک راست نمایید و بر روی گزینه ی Add کلیک کنید. در پنجره جدیدی که باز می شود، Activity را انتخاب کنید و نام آن را SelectActivity.cs بگذارید.
مرحله 14 : سپس به مسیر Solution Explorer-> Project Name->Resources->layout->Select.axml بروید، و بر روی Design View کلیک کنید تا باز شود.
مرحله 15 : به مسیر Solution Explorer-> Project Name->SelectActivity.cs بروید و کدهای زیر را بنویسید. کد زیر را در آن بنویسید.
using System.IO;
public class SelectActivity : Activity
{
Button btn_select;
EditText txt_id;
TextView txt_name;
TextView txt_nickname;
TextView txt_dept;
TextView txt_place;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.Select);
txt_name = FindViewById<TextView>(Resource.Id.txt_studentname);
txt_nickname = FindViewById<TextView>(Resource.Id.txt_nickname);
txt_dept = FindViewById<TextView>(Resource.Id.txt_dept);
txt_place = FindViewById<TextView>(Resource.Id.txt_place);
txt_id = FindViewById<EditText>(Resource.Id.txtid);
btn_select = FindViewById<Button>(Resource.Id.btn_select);
btn_select.Click += Btn_select_Click;
}
private void Btn_select_Click(object sender, EventArgs e)
{
clear();
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"); //Call Database
var db = new SQLiteConnection(dpPath);
var data = db.Table<StudentTable>(); //Call Table
int idvalue = Convert.ToInt32(txt_id.Text);
var data1=(from values in data
where values.id== idvalue
select new StudentTable
{
StudentName = values.StudentName,
NickName = values.NickName,
Dept = values.Dept,
Place = values.Place
}).ToList<StudentTable>();
if(data1.Count>0)
{
foreach (var val in data1)
{
txt_name.Text = val.StudentName;
txt_nickname.Text = val.NickName;
txt_dept.Text = val.Dept;
txt_place.Text = val.Place;
}
}
else
{
Toast.MakeText(this, "Student Data Not Available", ToastLength.Short).Show();
}
}
void clear()
{
txt_name.Text = "";
txt_nickname.Text = "";
txt_dept.Text = "";
txt_place.Text = "";
}
}
مرحله 16 : سپس برنامه را Build و سپسRun کنید تا بتوانید خروجی این قسمت را ببینید.
UPDATE (ویرایش- به روز رسانی)
مرحله 17 : یک Layout جدید برای عملیات ویرایش اضافه کنید. برای این کار، به مسیر Solution Explorer-> Project Name->Layout بروید، بر روی این فایل ، کلیک راست کنید و در پنجره جدیدی که باز می شود، گزینه ی
Android Layout را انتخاب کرده و نام آن را Update.axml بگذارید.
مرحله 18 :سپس بر روی نام پروژه کلیک راست کنید و یک Activity دیگر به نام UpdateActivity.cs اضافه کنید.
مرحله 19 : سپس به مسیر Solution Explorer-> Project Name->Resources->layout-> Update.axml بروید و بر روی Design View کلیک کنید.
مرحله 20: به فایل UpdateActivity بروید و کدهای زیر را در آن بنویسید.
using System.IO;
public class UpdateActivity : Activity
{
Button btn_get;
Button btn_update;
EditText txt_id;
EditText txt_updatename;
EditText txt_updatenickname;
EditText txt_updatedept;
EditText txt_updateplace;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.Update);
txt_updatename = FindViewById<EditText>(Resource.Id.txt_updatename);
txt_updatenickname = FindViewById<EditText>(Resource.Id.txt_updatenickname);
txt_updatedept = FindViewById<EditText>(Resource.Id.txt_updatedept);
txt_updateplace = FindViewById<EditText>(Resource.Id.txt_updateplace);
txt_id = FindViewById<EditText>(Resource.Id.txt_update_id);
btn_get = FindViewById<Button>(Resource.Id.btnget);
btn_update = FindViewById<Button>(Resource.Id.btn_update);
btn_get.Click += Btn_get_Click;
btn_update.Click += Btn_update_Click;
}
private void Btn_get_Click(object sender, EventArgs e)
{
//clear();
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"); //Call Database
var db = new SQLiteConnection(dpPath);
var data = db.Table<StudentTable>(); //Call Table
int idvalue = Convert.ToInt32(txt_id.Text);
var data1 = (from values in data
where values.id == idvalue
select new StudentTable
{
StudentName = values.StudentName,
NickName = values.NickName,
Dept = values.Dept,
Place = values.Place
}).ToList<StudentTable>();
if (data1.Count > 0)
{
foreach (var val in data1)
{
txt_updatename.Text = val.StudentName;
txt_updatenickname.Text = val.NickName;
txt_updatedept.Text = val.Dept;
txt_updateplace.Text = val.Place;
}
}
else
{
Toast.MakeText(this, "Student Data Not Available", ToastLength.Short).Show();
}
}
private void Btn_update_Click(object sender, EventArgs e)
{
try
{
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"); //Call Database
var db = new SQLiteConnection(dpPath);
var data = db.Table<StudentTable>();
int idvalue = Convert.ToInt32(txt_id.Text);
var data1 = (from values in data
where values.id == idvalue
select values).Single();
data1.StudentName = txt_updatename.Text;
data1.NickName = txt_updatenickname.Text;
data1.Dept = txt_updatedept.Text;
data1.Place = txt_updateplace.Text;
db.Update(data1);
Toast.MakeText(this, "Updated Successfully", ToastLength.Short).Show();
}
catch(Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
}
}
}
مرحله 21: پروژه را Build و Run کنید تا بتوانید خروجی را ببینید.
DELETE (حذف)
مرحله 22: یک layout برای عملیات خذف ایجاد کنید. بر روی layout کلیک راست کنید و در پنجره ای که باز می شود، یک Android Layout انتخاب کرده و نام آن را Delete.axml بگذارید و بر روی دکمه Add کلیک کنید.
مرحله23 : سپس بر روی نام پروژه کلیک راست کنید و یک Activity اضافه کنید و نام آن را DeleteActivity.cs بگذارید.
مرحله 24 : فایل Delete.axml را باز کنید و بخش Design View آن را مشاهده کنید.
مرحله 25: فایل DeleteActivity.cs را باز کنید و کدهای زیر را در آن وارد نمایید.
public class DeleteActivity : Activity
{
Button btn_delete;
EditText txt_delete_id;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.Delete);
txt_delete_id = FindViewById<EditText>(Resource.Id.txt_delete_id);
btn_delete = FindViewById<Button>(Resource.Id.btn_delete);
btn_delete.Click += Btn_delete_Click;
}
private void Btn_delete_Click(object sender, EventArgs e)
{
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"); //Call Database
var db = new SQLiteConnection(dpPath);
var data = db.Table<StudentTable>();
int idvalue = Convert.ToInt32(txt_delete_id.Text);
var data1 = data.Where(x => x.id == idvalue).FirstOrDefault();
if (data1.id!=null)
{
db.Delete(data1);
Toast.MakeText(this, "Delete Successfully", ToastLength.Short).Show();
txt_delete_id.Text = "";
}
else
{
Toast.MakeText(this, "Not Found", ToastLength.Short).Show();
}
}
}
به این ترتیب ، ما توانستیم عملیات مورد نظرمان را با استفاده از پایگاه داده SQLite پیاده سازی کنیم.
- Xamarin
- 3k بازدید
- 11 تشکر