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
çok sağol
Cevaplaİşinize yaramasına sevindim...
CevaplaUsta kaç gündür arıyorum. Adam gibi kodları yazan yoktu. Çok saol
Cevaplaslm ben Hilal saol kodlar için çok işime yaradı fakat delete de hata veriyor nasıl yapabilirm ?
CevaplaHatanın ne oldugunu söylerseniz daha sağlıklı cevap verebilirim. Ama GetUpdateCommand() metodunu GetDeleteCommand() olarak değiştirerek deneyebilirsiniz.
CevaplaSlm Saol paylaşım için çok işime yaradı fakat silme yi yapamadım yardımcı olurmusunuz?
CevaplaEline sağlık kaç gündür ID kısmını atladığım için hata alıyormuşum ;)
CevaplaDaha 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.
Rica ederim iyi çalışmalar...
Cevaplainsert olayı nasıl oluyor
CevaplacmdBuilder.GetUpdateCommand(); yerine insert kullanmanız işinizi görür.
CevaplaBu örnek sadece böyle de bir şey var demek için paylaşım amaçlı yayınlanıyor.
CevaplaBenim 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.
Naıl yaptınız siz. Benim olmuyor.
CevaplaYorum Gönder