Geçen hafta LinQ teknolojisini nasıl kullanacağımızı öğrenmiştik. Bu hafta ise LinQ teknolojisi ile birlikte bazı veritabanı işlemlerini gerçekleştirmeye çalışacağız. İlk haftalarda veritabanı işlemleri için ayrı bir veritabanı kullanmıştık. Bu hafta yapacağım programı daha kolay takip etmeniz açısından daha basit ve anlaşılır bir veritabanı kullanacağım.
İlk olarak veritabanımızı oluşturarak işe başlayalım. MS Sql'de aşağıdaki Queryi execute edelim.
create database School;
use School;
create table Teacher(
Tid int NOT NULL IDENTITY(1,1) ,
name varchar(50),
surname varchar(50),
title varchar(50),
course varchar(50),
primary key(Tid),
)
Yukarıdaki Query de bir okul veritabanı oluşturduk ve bu veritabanına teacher tablosu ekledik. Teacher tablosuna bazı attributeler ekledikten sonra primary key olan Tid ' yi otomatik artırması için IDENTITY(1,1) kodunu kullandık. Tablomuzu oluşturduktan sonra bu tabloya aşağıdaki şekilde veriler girelim.
![]() |
Figür 1: Veritabanı Görünüm |
Veritabanımızı oluşturduktan sonra geçmiş haftalarda gösterdiğim şekilde Data Model oluşturuyoruz ve bu haftaki asıl konumuza geçiyoruz.
Bu hafta LinQ teknolojisini kullanarak veritabanımızdaki verileri özel kurallara göre listelemeyi ve seçili olan veriyi silme işlemlerini öğreneceğiz. Bunun için ilk olarak bir form dizayn edelim ve bu form üzerinden işlemlerimizi yapalım. Formumuzun dizaynı aşağıdaki gibi olsun.
Şekilde de görüldüğü gibi bir DataGridView, bir TextBox, bir Label ve iki Button kullandık ve isimlerini aşağıdaki gibi düzenledik.
DataGridView = dgvTeacher
TextBox = txtTitle
Tamam Button = btnOnay
Sil Button = btnSil
Formumuzu dizayn edip gerekli düzenlemeleri yaptıktan sonra şimdi belli bir kurala göre nasıl listeleme işlemi yapacağız onu görelim.
İlk önce DataModelini oluşturduğumuz School veritabanını kullanmak için aşağıdaki kod blogunu ekleyelim.
SchoolEntities se = new SchoolEntities();
Daha sonra Teacher tablosundaki attributeleri kullanmak için GetTeacher classı açıp bütün attributeler için tek tek property oluşturuyoruz.
class GetTeacher
{
public int Tid { get; set; }
public string name { get; set; }
public string surname { get; set; }
public string title { get; set; }
public string course { get; set; }
}
}
Kuralımız öğretmenlerin ünvanları olsun. Textbox'a yazacağımız ünvana göre DataGridView'da ilgili öğretmenler çıksın. Bunun için Tamam Butonun Click metodunu aşağıdaki gibi düzenleyelim.
private void btnOnay_Click(object sender, EventArgs e)
{
List<GetTeacher> lst_Teacher = new List<GetTeacher>();
lst_Teacher = (from q in se.Teachers
where q.title == txtTitle.Text
select new GetTeacher
{
Tid = q.Tid,
name = q.name,
title = q.title,
surname = q.surname,
course = q.course,
}).ToList();
dgvTeacher.DataSource = lst_Teacher;
}
Geçen hafta anlattığım LinQ konusunda herhangi bir List<> üzerinden nasıl where, select, from gibi komutların kullanılacağını görmüştük. Yukarıda da GetTeacher classı türünde bir List oluşturduk ve bu list üzerinde where komutu ile bir koşul belirtmiş olduk. where q.title == txtTitle.Text kodu ile TextBox dan aldığımız veriyi q.title'a eşitleyerek istediğimiz ünvanlı öğretmenlerin listelenmesini sağladık.
ToList() metodu ise GetTeacher türünde oluşturduğumuz lst_Teacher listesine belirtiğimiz koşulu sağlayan öğretmenleri bu listeye atmamızı sağladı.
Programımızı Yard.Doç ünvana sahip öğretmenleri sıralamak için kullanalım.
![]() |
Figür 3: Yard.Doç ünvanlı Öğretmenler |
Silme İşlemi:
Silme işlemlerini yapabilmek için kullandığımız DataGridView propertylerinden Multi Select= false, SelectionMode = FullRowSelect yapıyoruz. Bu işlemi yaptıktan sonra getIndex isimli bir değer belirliyoruz.
public string getIndex;
Oluşturduğumuz bu string değeri bizim DataGridView'da seçtiğimiz itemin indexini tutacak ve bizde bu index üzerinden silme işlemimizi gerçekleştireceğiz. Seçili iteminin indexini almak için DataGridView metodlarından olan SelectionChanged kullanıyoruz ve aşağıdaki kodlamayı yapıyoruz.
private void dataGridView1_SelectionChanged(object sender, DataGridViewCellEventArgs e)
{
getIndex = "0";
getIndex = dgvTeacher.CurrentRow.Cells[0].Value.ToString();
}
DataGridView üzerinde seçtiğimiz itemın indexini belirledikten sonra artık silme işlemi için gerekli kodlamayı yapabiliriz. Sil buttonunun DialogResult=OK yapalım ve Click metodunu aşağıdaki gibi düzenleyelim.
private void btnSil_Click(object sender, EventArgs e)
{
int index = Convert.ToInt32(getIndex);
var p = se.Teachers.Where(q => q.Tid == index);
DialogResult dialog = MessageBox.Show("Silmek İstediğinize Emin misiniz?","Öğretmen Sil", MessageBoxButtons.OKCancel);
if (dialog == DialogResult.OK)
{
p.ToList().ForEach(q => se.Teachers.Remove(q));
se.SaveChanges();
}
}
Şimdi isterseniz Tid = 5 olan "Cihan Kaleli" öğretmenini silelim.
![]() |
Figür 4: Silme İşlemi |
OK tuşuna bastığımız zaman ekran görüntüsü aşağıdaki gibi olması beklenir.
![]() |
Figür 5: Silme İşlemi Sonu |
Bu hafta LinQ teknolojisinden faydalanarak bazı veritabanı işlemleri gerçekleştirdik. Umarım faydalı bir yazı olmuştur. Gelecek hafta görüşmek dileğiyle...
Referanslar:
Hiç yorum yok:
Yorum Gönder