SqlCommandBuilder Sınıfı ve DataGridView üzerinden update işlemi

Merhabalar;

Bu yazımızda dataGridView nesnesi üzerinden güncelleme silme ve ekleme işlemlerini ögrenecez.

Hepimiz programlarımız da dataGridView kullanıyoruz vede tanıdıkca daha da çok seviyoruz.

Bazen kullanıcılar müşterilerin siparişlerini verirken bazı kayıtları düzenleme geregi duyarlar. Örnegin Teslimat günü 3 gün sonra olan bi ürün depoda kalmamış ve 4. gün gelecektir. Hemen formlar arasında gidip gelmekdense hemen orada aynı anda değiştirmek isterler ki bence haklarıdırda. Peki bu durumda neler yapalabiliriz.

Not: Muhtemelen aşagıda ki hatayı alırsınız.
" Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information."
Bu hatanın nedeni database de tablonuzda primery key yoktur. Yani genelde ID kolonu olur Birincil anahtar atarsanız çözüme ulaşırsınız.

string cnStr = "Server=.;DataBase=TEST;uid=sa; pwd=123";
SqlConnection Conn;
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adp;
DataTable dt;
private void btnYukle_Click(object sender, EventArgs e)
{
// Bu kısım zaten biliyorsunuz...
// Database bağlanı sorgu çektik, dönen sonuçları dataGridView nesnesine doldurduk.
Conn = new SqlConnection(cnStr);
cmd = new SqlCommand("Select * From CustomerInfo", Conn);
adp = new SqlDataAdapter(cmd);
dt = new DataTable();
adp.Fill(dt);
dataGridView1.DataSource = dt;
}
private void btnGuncelle_Click(object sender, EventArgs e)
{
//Evet asıl olayın gerçekleştigi yer burasu buraya biraz dikkat ediyoruz.
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adp);
// SqlCommandBuilder burda bizim için update delete vs. komutlar hazırlar ve dataAdapter ile ilişkendirilir.cmdBuilder.GetUpdateCommand(); //ben sadece update yapacagım için GetUpdateCommand() kullandım siz isterseniz ihtiyacınız için insert ve delete uygulayabilirsiniz.adp.Update(dt); // vee mutlu son dataTabledeki değişikliklerDatabase işleniyor.}

Umarım faydalı olur. Bence çok tatlı bişey bu mükkem pratiklik getiriyor.
Bu arada canım hala çok sıkılıyor....
Bir sonraki yazımızda görüşünceye kadar mutlu kalın....

12 yorum

İşinize yaramasına sevindim...

Cevapla

Usta kaç gündür arıyorum. Adam gibi kodları yazan yoktu. Çok saol

Cevapla

slm ben Hilal saol kodlar için çok işime yaradı fakat delete de hata veriyor nasıl yapabilirm ?

Cevapla

Hatanın ne oldugunu söylerseniz daha sağlıklı cevap verebilirim. Ama GetUpdateCommand() metodunu GetDeleteCommand() olarak değiştirerek deneyebilirsiniz.

Cevapla

Slm Saol paylaşım için çok işime yaradı fakat silme yi yapamadım yardımcı olurmusunuz?

Cevapla

Eline sağlık kaç gündür ID kısmını atladığım için hata alıyormuşum ;)

Daha kolay bir yöntemde datagridview in rowvalidated olayına güncelleme kodunu yazmak. Bu sayede hangi herhangi bir satırla uğraşmanız bittikten sonra otomatik olarak güncelleme yapılıyor.

Cevapla

Rica ederim iyi çalışmalar...

Cevapla

insert olayı nasıl oluyor

Cevapla

cmdBuilder.GetUpdateCommand(); yerine insert kullanmanız işinizi görür.

Cevapla

Bu örnek sadece böyle de bir şey var demek için paylaşım amaçlı yayınlanıyor.
Benim tavsiyem özel bir sebebiniz yoksa kodların kontrollerini elinizde tuttuğunuz daha sağlıklı yöntemleri kullanmanız.

Kesinlikle güçlü OOP ile bir ORM kullanmanız kolay ve sağlıklı iş çıkarmanızı sağlar.

Cevapla

Naıl yaptınız siz. Benim olmuyor.

Cevapla

Yorum Gönder