Anasayfa / C#.Net / C# ile Sql Server Veritabanı Kayıt Güncelleme İşlemleri
c# sql server

C# ile Sql Server Veritabanı Kayıt Güncelleme İşlemleri

Bundan önceki yazılarımda veritabanına kayıt ekleme ve kayıtları datagridview içerisinde göstermekten bahsetmiştim. Şimdi ise veritabanı içerisinden istediğimiz kaydı bulduktan sonra nasıl güncelleme işlemi yapabileceğimizi anlatacağım. Örneğimizde kullanacağımız DataAdapter ve DataReader sınıflarını inceleyelim.

SqlDataAdapter; bellek üzerinde oluşturulan tablo ve kayıtların, veritabanına gönderilmesi ya da veritabanındaki tabloların belleğe çekilmesi işlemlerini gerçekleştiren sınıftır.

SqlDataReader; veritabanından okunan kayıtların bellek üzerinde tutulmasını sağlayan sınıftır. Bağlantı açık olduğu sürece çalışır ve aynı anda sadece bir kaydı bellekte saklayabilir.

Veritabanı işlemleriyle ilgili önceki yazılarımızı okumayanlar için Sql veritabanımızdaki musteriler tablomuzu aşağıdaki gibi hazırladığımızı belirtmek isterim.

sql table
Musteriler Tablosu

Örneğimizin nasıl çalışacağını açıklayalım. Öncelikle üzerinde değişiklik yapmak istediğimiz müşterinin bilgilerini veritabanından çekip, bu bilgileri form üzerindeki kontrollere aktaracağız. Sonra gerekli değişiklikleri yapıp, yeni verileri eskisiyle değiştireceğiz. Bunun için aşağıdaki gibi formumuzu oluşturuyoruz.

kayit güncelleme tasarim
Güncelleme Form Tasarımı

Formuzun tasarımı bittikten sonra öncelikle Ara butonu yardımıyla müşteri bilgilerini bize getirecek olan kodlarımızı yazalım. Kodların çalışmasıyla ilgili ayrıntıları satır aralarına ekledim.

Kontrollerin isimlerini yazarken hata yapmadıysanız veritabanında ki ilgili kaydı, form üzerinde aşağıdaki gibi görüntülemiş olmanız gerekiyor.

veritabanı kayıt sorgulama
Veritabanı Kayıt Sorgulama

Şimdi müşteri bilgilerinde değişiklik yaptıktan sonra veritabanındaki bilgileri güncellemek için gerekli olan Kaydet butonumuza ait kodları yazalım.

Veritabanımızdaki müşterimize ait verileri sorunsuz şekilde güncelledik. Konuyla ilgili sorularınızı bana iletebilirsiniz. Bir sonraki yazımda veritabanından kayıt silme işlemini anlatacağım. Kolay gelsin.

İlginizi Çekebilir!

c# müzik çalar yapımı

C# ile Müzik Çalar Yapımı

Bu dersimde Windows’un kendi müzik çaları olan Windows Media Player’ ı C# içerisin de kullanarak …


15 Yorumlar

  1. elinize sağlık çok iyi bir anlatım

  2. Gökhan Çevik

    Hocam ellerinize sağlık çok güzel ama iki tane eksik şey buldum, geri dönerseniz çok memnun olurum.
    1. Temizle butonuna bir müdahalede bulunmamısız 😀
    2. Kayıt butonuna tıkladıgımda db’de hepsini değistiriyor ve aynısı oluyor 🙁
    ama en azından çalısdı.

    • Gökhan Bey, yorumlarınız için teşekkür ederim. Kod karmaşası olmasın diye temizle butonuna kod eklemedim. Update sorgusunun where bölümünde hata yapmadığınıza emin misiniz?

  3. hoca yanlısın var sanırım aynı kodlar ama olmuyor hata veriyor ? komut tanımında “adres=@adres where id=@id diye devam ettim adresin sonuna virgül koyupda denedim koymadan da gene olmadı

    http://i.hizliresim.com/Ebl0W9.png

    resimden bakabilirsiniz

    • Update sorgunuzda tablonuzun ismi tables ise from kelimesi fazlalık olmuş, onu silerseniz sorununuz düzelecektir. Kolay gelsin.

  4. Hocam kodlarınızı aynen alıp, kendime göre düzenleyip çalıştırdım, bulma kısmı olup textboxlara getirdi ama değiştirme işlemi için aşağıdaki butona basınca aşağıdaki hatayı veriyor:

    “Conversion failed when converting the nvarchar value ‘label8’ to data type int.”

    Tablomda KitapNo kısmı var, hem birincil anahtar hemde otomatik sayı. (Başka bir tablodaki KitapNo ile de ilişkili.) Hocam lütfen yardım edin saatlerdir uğraşıyorum bir türlü hatayı çözemiyorum.. Teşekkürler.

    Not: Hocam diğer kayıt ekleme, silme, bulma işlemlerinin hepsi gayet iyi çalıştı bunda sorun çıkarıyor sadece.

  5. Hocam datatimepicker nasıl yansıtabiliriz veri tabanındaki tarihi?

    private void btnara_Click(object sender, EventArgs e)
    {
    SqlConnection baglan = new SqlConnection(“Data Source=mete-bilgisayar\\sqlexpress;Initial catalog=omyo;Integrated security=true”);
    baglan.Open();
    string kayit = “Select * from bilnorm1 where SNo=@SNo”;
    SqlCommand cmd = new SqlCommand(kayit, baglan);
    cmd.Parameters.AddWithValue(“SNo”, txtsno.Text);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
    {
    dtpTarih.Value = dr[“AraSinavTarihi”].ToString(); ;
    txtsaat.Text = dr[“SinavSaati”].ToString();
    txtderskod.Text = dr[“DersKodu”].ToString();
    txtdersadi.Text = dr[“DersinAdi”].ToString();
    txtsinif.Text = dr[“Sinif”].ToString();
    txtadsoyad.Text = dr[“AdiSoyadi”].ToString();
    txtderslik.Text = dr[“Derslik”].ToString();
    }
    else
    {
    MessageBox.Show(“Kayıt Bulunamadı.”);
    baglan.Close();
    }

    • Merhaba üstadım üstünden 2 ay geçmiş sen çözmüşsündür zaten fakat belki daha sonra arayıp da bulamayanlar olur diye yazarım ben.

      dtpTarih.Value = dr[“AraSinavTarihi”].ToString();

      Burada ToString dersen olmaz çünkü tarih biçimi text değildir. Bunu Convert.ToDateTime içine al. tostring silmeyi unutma !

      Kolay gelsin.

  6. Temizle butonu için bunu yapmanız yeterli

    private void temizleBtn_Click(object sender, EventArgs e)
    {
    foreach(Control item in this.Controls)
    {
    if(item is TextBox)
    item.ResetText();
    }
    }

  7. Hocam Kaydetme kısmında bağlantıyı kapattıgım halde “bağlantı kapatılmadı bağlantı durumu: açık” diyor.

  8. Hocam ;

    Bir proje üzerinde çalışıyorum ve bu projede satılan mallar ve alınan mallar var.

    Alınan mallar da olan malzemeyi satmak istediğim zaman satılan mallara gidiyor.Burada bir sıkıntı yok.

    Sıkıntı şurada satma işlemi yaptığım zaman alınan mallar da malzeme düşsün istiyorum.

    Örnek

    Alınan Mallar 1200 Adet

    Satılan Mallar 1000 Adet

    Bunu güncellediğim zaman alınan mallarda 200 tane kalmasını istiyorum.

    Çok Teşekkür Ederim Şimdiden 🙂

  9. Ben C#la hazırladığım programın database ni sql serverle bağladım şimdi c# da bisiklet kiralama ve teslim işlemi yaptığım formum var kiralama ekranımda KiraId KiralayanKisiId KiralanaBisikletId KiralananIstasyonId
    TeslimTarihi TeslimSaati TeslimAlınaGorevliId bölümleri mevcut teslim formumda da KiraId TeslimTarihi TeslimSaati IadeTarihi IadeSaati IadeEdilenGorevliId KiralamaSüresi KiraUcreti ve bu 2 form aynı tablo üzerinde işlem yapıyor ve benim sorum da TeslimAlınaGorevliId ile IadeEdilenGorevliId aynı değil ise bisikletin zimmetli oldugu istasyon değişicek
    zimmet tablom görevli tablom bisiklet tablom İstasyon tablom da var bunlarda bir birleriyle ilişkili bu sorumu triggerla yazmak istiyorum ama bunun için tanımladıgım değişkenlere sorgularla atamalar yapıp koşulu ssağlarsa zimmet ekranında güncelleme gerçekleşecek bunla ilgili fikirleri niz nedir

  10. mükemmelden öte siteniz var

  11. kral 3 sene olmuş cevap bulabildin mi ben de benzer bir zimmet otomasyonu gibi bir şey yapıyorum kaynak kodun falan varsa paylaşabilir misin

  12. System.Data.SqlClient.SqlException: ‘Conversion failed when converting the nvarchar value ‘label9′ to data type int.’ bu hatayı alıyorum
    SqlCommand update = new SqlCommand(“update Users set Ad=@name, SoyAd=@lastname,Phone=@phone,TcKimlik=@tc,Adress=@adress, DogumTarihi=@dogumTarihi,email=@mailAdresi,Picture=@pc where ID=@id”, con);
    update.Parameters.AddWithValue(“@name”, txtad.Text.Trim().ToUpper());
    update.Parameters.AddWithValue(“@lastname”, txtSoyad.Text.Trim().ToUpper());
    update.Parameters.AddWithValue(“@phone”, maskedphone.Text);
    update.Parameters.AddWithValue(“@tc”, txttc.Text.Trim().ToUpper());
    update.Parameters.AddWithValue(“@adress”, txtAdress.Text.Trim().ToUpper());
    update.Parameters.AddWithValue(“@dogumTarihi”, dtDogum.Value.Date);
    update.Parameters.AddWithValue(“@mailAdresi”, txteposta.Text);
    update.Parameters.Add(“@pc”, SqlDbType.Image, resim.Length).Value = resim;
    update.Parameters.AddWithValue(“@id”, label9.Text);

Bir cevap yazın

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

Time limit is exhausted. Please reload the CAPTCHA.