Merhaba arkadaşlar bu yazımda sizlere Datagridview de seçili olan satırı veritabanından nasıl sileriz onu açıklayacağım. Bu yapacağımız örnekte Form açılır açılmaz veritabanındaki bilgileri Datagridview’de gösterecek ve biz bir satırı seçip sil tuşuna basınca silme işlemi gerçekleşecek. Bu işlemi yaptıktan sonra programı kapatmadan, Datagridview’i yenileyeceğiz.

Şimdi bir Windows Form açalım. Form’a 1 adet buton, 1 adet label ve 1 adet datagridview ekleyelim.

Sırada kodlarımız var.

using System.Data.OleDb;//Access kütüphanesi namespace WindowsFormsApplication1 
public partial class Form1 : Form
{
    public Form1() { InitializeComponent(); }
    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data.accdb");
    //BURASI VERİTABANI BAĞLANTISI
    OleDbCommand kmt = new OleDbCommand(); // Burası kmt isimli bir komut tanım cümlesi.
    DataTable tablo = new DataTable(); // tablo isiminde bir Datatable tanımladık. 
    private void listele() //listele adında bir class belirledik. {tablo.Clear(); //tabloyu temizledik 
OleDbDataAdapter adtr = new OleDbDataAdapter("Select * From Kayit", bag);
    // verileri SQL sorgusu ile adaptöre aktardık. 
    adtr.Fill(tablo); //adaptördeki verileri tablonun içine doldurduk. 
dataGridView1.DataSource = tablo; //tablodaki verileri datagridview'e aktardık.}
private void Form1_Load(object sender, EventArgs e)
    {
        listele();
    }

Buraya olan kodları açıklayalım. Veritabanı bağlantımızı tanımlayarak, Access Veritabanı bağlantısını kurmuş olduk. Daha sonra bir komut cümlesi ve bir veritabanı tablosu tanımladık.

listele adında bir class belirledik ve içerisine veritabanındaki bilgileri Datagridview’de göstermesini istediğimiz verileri kodladık. Burada yazan “Select * From Kayit” SQL sorgusunun anlamı: Kayit tablosunun içindeki tüm(*) verileri seç demektir. İleri ki yazılarımda SQL sorgularının hepsini yazacağım takip ediniz. Son olarak listele sınıfını Form’un Load olayına yazdık, böylelikle Form açıldığı zaman veritabanındaki verileri direk olarak Datagridview’de gösterecek.

Şimdi gelelim Datagridview’in seçili satırını silmek için gerekli kodlarımızı, buton’nun klik olayına yazmaya.

private void button1_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Seçili Ögeyi Silmek İstiyor Musunuz ?""Dikkat"MessageBoxButtons.YesNoMessageBoxIcon.Question== DialogResult.Yes)
    {
        bag.Open();
        kmt.Connection = bag;
        kmt.CommandText = "DELETE FROM Kayit WHERE ogrNo=@ogrnumarasi";
        kmt.Parameters.AddWithValue("@ogrnumarasi"dataGridView1.CurrentRow.Cells[0].Value.ToString());
        kmt.ExecuteNonQuery();
        bag.Close();
        MessageBox.Show("Silme İşlemi Başarılı""Silindi"MessageBoxButtons.OKMessageBoxIcon.Information);
        listele();
    }
    else
    {
 
    }
}

Buradaki kodlarımızı açıklayalım. Daha önce kullandığım öğrenciler ile ilgili olan veritabanını kullanıyorum. If ile kullanıcıya önce sorduk seçili ögeyi silmek istiyor musunuz? diye. Kullanıcı hayır derse else devreye girecek içi boş olduğu için hiç bir değer döndürmeyecek ve bir işlem yapmayacaktır. Fakat kullanıcı evet derse veritabanı bağlantımız açılacak ve komutumuza yazdığımız SQL sorgusunu, ExecuteNonQuery ile çalıştıracaktır. Son olarak MessageBox ile kullanıcıya bilgi mesajı verecektir. En sonunda listele() sınıfını çağırıyoruz, Datagridview’in yenilenmesini sağlıyor ve işlemi tamamlamış oluyoruz. Burada kullandığım Parametre kodu ile ilgili bilgileri ileri ki yazılarımda anlatacağız.

dataGridView1.CurrentRow.Cells[0].Value.ToString() // Bu ifadede geçen satırın anlamı şu şekildedir.
//CurrentRow=Seçili satır demektir.
//Cells[0].Value=Seçili satırın 0. hücresindeki değer demektir.
//ToString()= Bu da ifadedin string ifadeye çevirilmesidir.

Burada dikkat etmemiz gereken şey SQL sorgusunda bizim öğrenci numarasını kullanmamızdır. Öğrenci numarası benzersiz ve tekrarlanamaz olduğu için silme işlemini bu ifadeye göre yapmalıyız. Eğer bu silme işlemini ogrNo ya göre yapmazsanız farklı sonuçlar veya hatalarla ile karşılaşabilirsiniz. Örneğin Ahmet adlı öğrenciyi silmek istiyoruz. Bunu eğer Ahmet adına göre sil derseniz, veritabanında bulunan Ahmet ismindeki tüm öğrencilerin kaydını silmiş oluruz ve bu da büyük bir hata olmuş olur.

Kolay gelsin.