C# C# Windows Form Örnekleri Programlama SQL Server

C# DATAGRİDVİEW ÜZERİNDEN VERİ GÜNCELLEME

Bazı durumlarda veritabanındaki verilerin datagridview üzerinden güncellenmesi veya eklenebilmesi istenebilir. Bu örneğimizde SQL Server da bulunan veritabanımıza bağlantı kurup CommandBuilder nesnesi ile datagridview üzerinden güncelleme işlemini gerçekleştireceğiz.

Öncelikle kullanacağımız veri tabanı ve tablosunu oluşturalım. Veritabanımızın ismi “sirket” tablomuzun adı “musteriler” olacak.

Daha sonra C# formumuzu aşağıdaki şekilde oluşturalım.

Formumuzu oluşturduktan sonra kodları yazmaya başlayacağız. Yazacağımız kodları kısaca açıklamamız gerekirse öncelikli olarak Form yüklendiğinde “müşteriler” tablosundaki verilerin datagridview‘ de görüntülenmesini sağlayacağız. “GÜNCELLE” butonuna ise yazacağımız kodlarla ise datagridview üzerinde herhangi bir değişiklik yaptığımızda veya kayıt eklendiğinde bu kayıtların veritabanında güncellenmesini sağlayacağız.

Kodları aşağıdaki şekilde yazıp programı çalıştıralım.

satırını eklemeyi unutmayalım.

2. kayıtta bulunan Ali Er isimli müşterinin Soyadını Erşahin Şehrini de Malatya olarak değiştirelim. Güncelle butonuna bastığımızda;

Kaydın yukarıda görüldüğü gibi değiştiğini göreceksiniz. Dilerseniz SQL Server üzerinde de kontrolünü yaparak kaydın değiştiğini görüntüleyebilirsiniz.

42 Yorum

  • Merhaba, kodlar yanlızca bir defa işlem yapmamıza olanak tanıyor. Bir alan güncelledikten sonra yeniden bir güncelleme yapabilmek için form ekranına yeniden giriş yapmamız gerekmekte. Bunla ilgili bir açıklama yapabilir misin hocam acaba?

  • Merhabalar, Veri tabanından bağımsız olarak Datagridview satırlarında güncelleme nasıl yapılabilir. Örnek textbox’a barkod numarası girildi. Ürün SQL’den çağrıldı ve datagridview ekranına yerleşti, miktar olarak da 1 adet yazıldı. Tekrar textbox’a aynı barkod girildiğinde varolan satırdaki miktarı 1 artırmak. Code:
    public partial class DtGridView : Form
    {
    DataTable dt = new DataTable();
    public Form1 frm1;
    public DtGridView()
    {
    InitializeComponent();
    }
    SqlConnection connect = new SqlConnection(“Data Source = ; Initial Catalog = Deri; User Id = sa;Password = “);

    string constr = “Data Source = ; Initial Catalog = Deri; User Id = sa; Password = “;

    public DataTable Cek(string bark)
    {
    SqlConnection con = new SqlConnection(constr);
    SqlDataAdapter da = new SqlDataAdapter(“Select Barcode,Birim,Miktar=1 from StokBarcode where Barcode=@Barcode”, con);
    da.SelectCommand.Parameters.AddWithValue(“Barcode”, bark);
    //DataTable dt = new DataTable();
    da.Fill(dt);
    return dt;
    }

    private void btnEkle_Click(object sender, EventArgs e)
    {

    try
    {
    if (!string.IsNullOrEmpty(txtBarcodeAra.Text))
    {
    string barkod = txtBarcodeAra.Text;
    dataGridView1.DataSource = Cek(barkod);
    if (dataGridView1.DataSource != null)
    {
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    string brk = row.Cells[“Barcode”].Value.ToString();

    if (brk == barkod)
    {
    double sayac = double.Parse(row.Cells[“Miktar”].Value.ToString()); ;
    sayac++;
    row.Cells[“Miktar”].Value = sayac;

    //dataGridView1[“Miktar”,0].Value = sayac; // “0” DataGridView deki İlk kolon zaten tek kolon bilgi geliyor.
    }
    }
    }
    }
    else
    {
    MessageBox.Show(“Boş Geçme”);
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

  • Merhaba Hocam, Kayıt güncellemesi yaptığımda güncelleme işleminden sonra da datagridviewde güncellenen kaydın seçili olmasını istiyorum. Normalde güncellendiğinde ilk satırdaki kayıt seçili hale geliyor. Bunun için ne yapabilirim. Kodları paylaşabilirmisiniz?

    • Datagride tıkladığınız satirin index numarasini bir degiskene kaydedip guncelleme isleminden sonra ayarlanmasi gerekiyor.

    • Sorun çözüldü.

      satno = Convert.ToInt32(dataGridView1.CurrentCell.RowIndex); ile satır numarasını aldıktan sonra aşağıdaki kod ile güncelenen kayıt seçimi yapılabilir.

      dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[satno].Index;
      dataGridView1.CurrentCell = dataGridView1.Rows[satno].Cells[1];
      dataGridView1.Rows[satno].Selected = true;

  • visual studio 2015 de bu projejde güncelle butonun bastığımda

    da.Update(ds, “musteriler”);

    komutta hata alıyorum. veri tabanı sağlam diğer projem calısıyor ama burda ne sorun olduğunu çözüm bulamadım yardımcı olabilirmisiz

  • private void button1_Click(object sender, EventArgs e)
    {
    con.Ope();
    dt = new DataTable();
    cmdb = new SqlCommandBuilder(da);
    da.Update(ds, “musteriler”);
    MessageBox.Show(“Kayıt güncellendi”);
    }

    bu kısmı bu şekilde düzenledim ve her seferinde kayıt güncellendi uyarısı veriyor. fakat programı kapattım açtım ve veriler yerinde yoktu yani veritabanına kaydetmiyor.

    • Merhaba. Herhangi bir sorun olmaması gerekiyor. Veritabanı ismi ve Tablo isminini doğru yazıp yazmadığınızı tekrar kontrol edin.

      • Yok hocam hepsi doğru veritabanı olarak sqlite kullanıyorum ve dataset yerine datatable kullanıyorum. Bağlantı da sıkıntı olmuyor zaten form1 load olunca veritabanından verileri çekip datagride atıyor ve değişiklik yapıp güncelle deyince olumlu uyarı veriyor ama veritabanına kaydetmiyor. Pc başına geçince uygulamayı upload edebilirim

  • Bir kere güncellemeden sonra ikinci defa güncelleme yapılamıyor maalesef ki. Sorunu çözdünüz mü acaba ?

  • hocam aynı işlemleri yapınca bende Tutarlılık ihlali: UpdateCommand, beklenen 1 kaydın 0 kaydını etkiledi. hatası alıyorum. tabloda primary key mevcut, ayrıca o sütunu readonly=true yaptım.

    • private void button1_Click(object sender, EventArgs e)
      {
      ds=new DataSet();
      con.Open();
      cmdb = new SqlCommandBuilder(da);
      da.Update(ds, “musteriler”);
      MessageBox.Show(“Kayıt güncellendi”);
      con.Cose();
      }

      birde böyle deneyin.

  • Projenizi indirip denedim.
    " Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information. "

    Güncelle dediğimde bu hatayı veriyor.

  • hocam bir kere tek güncelleme yapıyor ikinci kez yapmaya kalkıştığımda olmuyor, başka sayfaya geçip yeniden yapmam gerekiyor. bunu nasıl düzeltirim

ilkermutlu57 için bir yanıt yazın X

Web Tasarım & Programlama sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et