Anasayfa / Yazılım / C# / Öğrenci Otomasyonu Bölüm 5

Öğrenci Otomasyonu Bölüm 5

Kayıt Listeleme için formumuzu tasarlamıştık, şimdi gelelim kodlama aşamasına. Ana formunda yer alan Kayıt Listele butonumun click eventine aşağıdaki kodları yazıyorum. Böylelikle Kayıt Listeleme formumun açılmasını sağlayacağım.

private void btnKayitListele_Click(object sender, EventArgs e)
        {
            frmKayitlariListele frm = new frmKayitlariListele();
            frm.Show();
        }

Şimdi bu form yüklenince veritabanındaki veriler listelenmiş olarak buraya akacak. Bunu yapabilmek içinde formun load olayını kullanacağım. Ben yine kod bloğumda açıklama vereceğim ama ön bir açıklama da yapalım.

Öncelikle veri tabanım ile bağlantı kurmam gerek, bunu yapacağım. Daha sonra OleDbDataAdapter nesnesi ile veritabanından çekilen verileri DataSet içine alacağım. OleDbDataAdapter nesnesi ile birlikte veritabanından çekilen bilgiler DataSet içine kaydedilir. DataSet içine bilgileri kaydedebilmek içinde OleDbDataAdapter nesnesinin Fill metodu kullanılır. Şimdi kodlarımıza geçelim. Bu arada form yeni bir form ve System.Data.OleDb kütüphanesini formuma eklemeyi unutmuyorum. Load olayında kodlarım aşağıdaki gibi:

private void frmKayitlariListele_Load(object sender, EventArgs e)
        {
            //Veritabanı bağlantı connection stringimi oluşturuyorum
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));
            
            //Dataset nesnemi oluşturuyorum adını dt verdim.
            DataSet dt = new DataSet();
            
            //Bağlantımı açıyorum
            conn.Open();
            
            //adt adında bir OleDbAdapter nesnesi oluşturuyorum
            OleDbDataAdapter adt = new OleDbDataAdapter("SELECT OgrenciBilgiler.TC_Kimlik_No, OgrenciBilgiler.AdSoyad, OgrenciNotlar.Vize, OgrenciNotlar.Final, OgrenciNotlar.Ortalama FROM OgrenciBilgiler, OgrenciNotlar WHERE OgrenciBilgiler.TC_Kimlik_No = OgrenciNotlar.TC_Kimlik_No", conn);
           
            //Dt isimli DataSet'imi OgrenciBilgiler tablom ile dolduruyorum.
            adt.Fill(dt, "OgrenciBilgiler");
           
            //DataGridView kontrolümün DataMember özelliğini tabloma eşitliyorum.
            dataGridView1.DataMember = "OgrenciBilgiler";
           
            //DataGridView kontrolümün DataSource nesnesini dataset nesneme eşitliyorum.
            dataGridView1.DataSource = dt;
            
            //adt'i dispose ediyorum ve bağlantımı kapatıyorum
            adt.Dispose();
            conn.Close();
        }

Şimdi gelelim Kayıt Güncelleme işlemlerine. Ana formumda Kayıt Güncellemeye tıklandığında veritabanımdan tüm verilerin listelenmesi ve seçmiş olduğum bir kayıt içinde üzerinde güncelleme yapmayı istiyorum. Öncelikle tasarımı yapalım tabi. Proje adıma sağ tıklayıp add > windows form diyerek yeni bir form ekliyorum, text özelliğini Kayıt Düzenleme, name özelliğini frmKayitDuzenleme verdim. Backcolor özelliğini de Highlight yapıyorum.

Düzenlemek, güncellemek istediğim tablo OgrenciBilgiler tablosundaki veriler. TC Kimlik No, Ad Soyad, Telefon No ve Bölüm Adı için 4 adet label ekleyeceğim. TC kimlik no ve telefon için iki adet masked text box ekleyeceğim. Ad soyad için de bir adet normal text box ekleyeceğim. Bölüm adları içinde bir adet combobox ekleyeceğim. Birde yaptığım değişiklikleri kaydetmek için bir adet buton kullanacğaım. Tabi bir de verileri listeleme işlemi de gerçekleştireceğim için aynı zamanda bir DataGridView’e ihtiyacım olacak. Dolayısı ile yine OleDbDataAdapter ve BindingSource nesnelerine ihtiyacım olacak.

Tasarıma geçelim. Labelleri ekledim herhangi bir isim vermiyorum. Sadece text özelliklerini sırası ile şöyle yapıyorum:

TC Kimlik No:
Ad Soyad:
Telefon:
Bölüm:

İki adet masked textbox ekliyorum. Bunların da adını msktxtTCKimlikNo ve msktxtTelefon verdim. Şimdi bunların mask özelliklerini belirleyelim. TC Kimlik No için masked text boxımın mask özelliğini Numeric olarak seçiyorum, digit sayısını da 11 yapıyorum, bunun için mask kısmında 11 tane sıfır yazdım.

2015050313

Telefon için bir masked text box daha ekledim. Adını msktxtTelefon verdim. Mask özelliğini de Phone Number yaptım.

2015050314

Ad ve Soyad için ise bir adet normal textbox ekliyorum. Adını da txtAdSoyad verdim. Bölüm için de bir adet combobox ekliyorum. Adını da cmbBolum verdim.

Verilerimi listeleyebilmek içinde bir DataGridView ekliyorum. Adını da dgvKayitlar verdim. Tasarımım aşağıdaki gibi oldu.

2015050316

Şimdi ana formumda yer alan Kayıt Güncelleme butonuna tıkladığımda bu tasarladığım form açılsın, bunun ana formumda yer alan Kayıt Güncelleme butonunun click eventine aşağıdaki kodları yazıyorum:

 private void btnKayitGuncelle_Click(object sender, EventArgs e)
        {
            frmKayitDuzenle frm = new frmKayitDuzenle();
            frm.Show();
        }

Kullanıcı bu form açıldığında veritabanındaki verileri görebilecek daha sonra seçmiş olduğu veriyi güncelleyebilecek, düzenleyebilecek. Şimdi bu kayıtları listeleyebilmek için bir metot yazalım.

Bu kodları son eklediğim frmKayitDuzenle.cs dosyasına yazıyorum. Öncelikle buraya da using System.Data.OleDb; tanımlıyorum ve kodlamama geçiyorum.

Şimdi bağlantı oluşturmam gerek bu form içinde her noktada bu bağlantımı kullanabilmek için aşağıdaki kodları yazıyorum.

 //Veritabanı bağlantı connection stringimi oluşturuyorum
        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));

Benim verileri listeleyebilmem için bir dataset nesnesine ihtiyacım var, bu dataseti hem formun load olayında hem de metodumda kullanacağım için bunu da yine form üzerinde global olarak tanımlıyorum.

DataSet dt = new DataSet();

Şimdi metodumuzu yazabiliriz:

 public void VerileriListele()
        {
            //bağlantımı açıyorum.
            conn.Open();
            //OgrenciBilgiler tablosundaki tüm kayıtları çekiyorum
            OleDbDataAdapter adt = new OleDbDataAdapter("SELECT * FROM OgrenciBilgiler", conn);
            //Bir dataset oluşturuyorum ve bu dataset nesnemi tablom ile dolduruyorum, dataset nesnemin adını dt verdim, tablomun adı da OgrenciBilgiler olsun.
            adt.Fill(dt, "OgrenciBilgiler");
            //DataGridView kontrolümün DataMember özelliği ile OgrenciBilgiler tablomu eşitliyorum
            dataGridView1.DataMember = "OgrenciBilgiler";
            //DataGridView kontrolümün DataSource özelliğini de dt nesnesine eşitliyorum
            dataGridView1.DataSource = dt;
            //Bağlantımı kapatıyor ve adaptörü dispose ediyorum, serbest bırakıyorum.
            adt.Dispose();
            conn.Close();
        }

Formum yüklendiğinde datagridview kontrolüm içinde kayıtlarım listelensin istiyorum, dolayısı ile formun load olayına kodlarımı yazmam lazım. Kodları kod bloğum içerisinde zaten açıklayacağım ancak yöntemi de şöyle bir özet geçelim. Veriler üstte yazmış olduğum Veri Listele metodu ile DataGridView kontrolüm içinde listelenecek. Ayrıca DataBinding yardımı ile de OgrenciBilgiler isimli tabloda yer alan TC Kimlik No, Ad Soyad, Telefon gibi bilgilerde ilgili metin kutularına yazılacak. Hemen kodlarımıza geçelim şimdi:

private void frmKayitDuzenle_Load(object sender, EventArgs e)
        {
            //Verileri Listeleme metodumu çalıştırıyorum
            VerileriListele();
            //OgrenciBilgiler tablosundaki verileri form üzerinde yer alan ilgili kontrollerde görüntüleyeceğim, bunun için DataBinding kullanıyorum.
            msktxtTCKimlikNo.DataBindings.Add("Text", dt, "OgrenciBilgiler.TC_Kimlik_No");
            txtAdSoyad.DataBindings.Add("Text", dt, "OgrenciBilgiler.AdSoyad");
            msktxtTelefon.DataBindings.Add("Text", dt, "OgrenciBilgiler.Telefon");
            cmbBolum.DataBindings.Add("Text", dt, "OgrenciBilgiler.Bolum");
            
        }

Bakın neyin farkına vardım ben bu tasarımımda verileri düzenleyeceğim de, peki ya sonra 🙂 Tabi kaydetmem gerekiyor, bunun için de formuma bir adet buton ekliyorum. Adını da btnGuncelle verdim. Text özelliğinini de güncelle yaptım. Tasarımım şimdi aşağıdaki gibi oldu.

2015050317

Şimdi değişiklikleri kaydetmek için butonumu ekledim. Bu butonun click olayında neler yapacağım, ona değinelim. Burada değişikliklerin yapılabilmesi yani bununla alakalı ilgili sorgunun kullanılabilmesi için ExecuteNonQuery metodunu kullanacağım. Daha sonra sorguyu dispose edilecek, bağlantı kapatılacak. DataSet nesnemin Clear metodu ile tablomun satırlarını sileceğim. Daha sonra tabi güncelleme bitince aynı zamanda tekrar DataGridView kontrolüm üzerinde yeni verileri görmem gerek, bunun için de yukarıda yazdığım Verileri Listele metodunu çalıştıracağım. O zaman şimdi kodları yazalım bakalım:

private void btnGuncelle_Click(object sender, EventArgs e)
        {
            //bağlantımı açıyorum
            conn.Open();
            //İlgili alanları güncelleyeceğim, bunun için UPDATE komutunu kullanıyorum.
            OleDbCommand cmd = new OleDbCommand("UPDATE OgrenciBilgiler SET AdSoyad='" + txtAdSoyad.Text + "', Telefon='" + msktxtTelefon.Text + "', Bolum='" + cmbBolum.Text + "' WHERE TC_Kimlik_No='" + msktxtTCKimlikNo.Text + "'", conn);
            cmd.ExecuteNonQuery();
            //Kayıtların güncellendiğini kullanıcıya bildir.
            MessageBox.Show("Veri güncelleme işlemi tamamlanmıştır", "Veri Güncelleme", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //sorguyu dispose edip serbest bırakıyorum
            cmd.Dispose();
            //bağlantımı kapatıyorum
            conn.Close();
            // Tablomun satırlarını temizliyorum
            dt.Clear();
            //En son güncelleme ile birlikte yeni verileri listeliyorum
            VerileriListele();
        }

Şimdilik bu kadar, projemizin bu aşamasına kadar olan kısmını aşağıdaki linkten indirebilirsiniz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir