چگونه از دیتابیس LiteDB در سی شارپ ویندوز فرم استفاده کنیم؟
سلام دوستان
در این مقاله قصد داریم از دیتابیس لایت دی بی در پروژه خودمون استفاده کنیم
لایت دی بی یک پایگاه داده سبک و قابل حمل می باشد که در نوشتن پروژه هایی با تعداد دیتا زیر 250 هزارتا مناسب هست
بریم سراغ کد نویسی
اول از همه یک پروژه ویندوز فرم بسازید
یک کلاس با مشخصات زیر ایجاد کنید
public class Contact
{
public int Id { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}
حالا باید یک DataGridView به فرم اضافه کنید و با کلیک راست بر روی آن bindingsource را روی کلاسی که بالاتر ساختیم قراردهید
در ادامه پنجره DataSource ویژوال استاذیو را باز کنید و کنترل ها را روی TextBox قراردهید و بعد آن ها را بر روی فرم درگ کنید
حالا باید از ناگت منیج پکیج کتاب خانه LiteDB را نصب کنید
دو متغییر سراسری در کد فرم ایجاد کنید
LiteDatabase db;
LiteCollection<Contact> list;
حواستون رو جمع کنید باید فضای نام زیر را using کنید
using LiteDB;
کد زیر را به رویداد لود فرم اضافه کنید
db = new LiteDatabase($"{Application.StartupPath}\\mydb.db");
list = db.GetCollection<Contact>();
//list.EnsureIndex("Id", true);
if (list.Count() == 0)
contactBindingSource.DataSource = new List<Contact>();
else
contactBindingSource.DataSource = list.FindAll();
کد زیر را به باتن new اضافه کنید
private void btnNew_Click(object sender, EventArgs e)
{
contactBindingSource.Add(new Contact());
contactBindingSource.MoveLast();
}
کد زیر را به باتن insert ضافه کنید
private void btnInsert_Click(object sender, EventArgs e)
{
if (idTextBox.Text == "0")
{
MessageBox.Show("Please enter your contact Id.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
idTextBox.Focus();
return;
}
if (string.IsNullOrEmpty(fullNameTextBox.Text))
{
MessageBox.Show("Please enter your fullname.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
fullNameTextBox.Focus();
return;
}
//Do similar for all controls
//Contact contact = new Contact();
//contact.Id = Convert.ToInt32(idTextBox.Text);
//contact.FullName = fullNameTextBox.Text;
//contact.Email = emailTextBox.Text;
//contact.Phone = phoneTextBox.Text;
//contact.Address = addressTextBox.Text;
Contact contact = contactBindingSource.Current as Contact;
if (contact != null)
{
list.Insert(contact);
//contactBindingSource.Add(contact);
//contactBindingSource.ResetAllowNew();
}
}
به باتن update هم کد زیر را اضافه کنید
private void btnUpdate_Click(object sender, EventArgs e)
{
Contact contact = contactBindingSource.Current as Contact;
if (contact != null)
{
list.Update(contact);
}
}
کد زیر را نیز به باتن delete اضافه کنید
private void btnDelete_Click(object sender, EventArgs e)
{
Contact contact = contactBindingSource.Current as Contact;
if (contact != null)
{
if (MessageBox.Show("Are you sure want to delete this record?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
list.Delete(contact.Id);
contactBindingSource.Remove(contact);
}
}
}
کد زیر را هم به باتن clear اضافه کنید که برای پاک کردن نتایج جستجو و نمایش تمامی داده ها به کار می رود
private void btnClear_Click(object sender, EventArgs e)
{
if (list.Count() == 0)
contactBindingSource.DataSource = new List<Contact>();
else
contactBindingSource.DataSource = list.FindAll();
}
کد زیر را به رویداد KeyPress تکست باکس اضافه کنید
private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)//enter
{
var results = list.Find(p => p.FullName.Contains(txtSearch.Text)).ToList();
contactBindingSource.DataSource = results;
}
}
اگر در زمانی که تکست باکس فعال است دکمه اینتر فشار داده شود عبارت درون تکست باکس جستجو شده و نتایج نمایش داده می شوند
پایان.