انجام عملیات CRUD با استفاده از پایگاه داده SQLite

دوشنبه 20 دی 1395

در این مقاله ، نحوه انجام عملیات افزودن یک کاربر، ویرایش ، حذف و همچنین مشاهده ی کامل جزئیات مربوط به کاربر را پیاده سازی می کنیم. برای این کار از پایگاه داده SQLite استفاده می کنیم.

انجام عملیات CRUD با استفاده از پایگاه داده 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 پیاده سازی کنیم.

آموزش برنامه نویسی اندروید با سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید