ADO.NET Komutlarına Devam [CRUD]

Merhaba Arkadaşlar,

 

ADO.NET komutlarına INERT, UPDATE ve DELETE işlemleriyle devam edeceğiz.

Yeni bir windows form uygulaması açıyorum (File > New > Project > Windows Forms Application)

ADO.NET makale serisindeki ilk yazıları okuduğunuzu varsayarak artık SqlConnection gibi sınıfları anlatmıyorum.

ADO.NET INSERT

 

Amaç: Kullanıcı tarafından form üzerinden girilecek olan verileri alıp Northwind veritabanındaki Categories tablosuna eklemek.

Form tasarımımız;

ADO.NET Komutlar

Verilerimizi kullanıcıdan açık bir şekilde textbox'a girdiği veriyi alacağımız için burada ciddi bir açık söz konusudur!

ADO.NET Komutlar Devam

 DİKKAT! Sql Injection dediğimiz saldırı modeli ile bu şekilde açık veri aldığınız textbox gibi kontrollere SQL Server'ın anlamlandıracağı değerler girilebilir. Bunun kontrolunun yapılması gerekmektedir. Form üzerinden aldığımız verileri direk SQL Server'a atmamalıyız! Parametrik olarak göndermemiz kuraldır!

@CategoryName ve @Description C# uygulaması ve Sql server bunu Sql Parametresi olarak görmektedir. Sizin de bu parametrik değeri nerden alacağını göstermeniz gerekmektedir.

C# tarafından Sql tarafına veriyi gönderirken form üzerindeki txtCategory textbox'ına girilen değeri @CategoryName parametresine set etmeliyiz.

ADO.NET Komutlar

Yazdığımız Insert formu'nun sorunsuz bir şekilde çalışabilmesi için bağlantı nesnemizi açığ ExecuteNonQuery() method'u ile Insert işlemini gerçekleştiriyoruz.

ADO.NET Komutlar

 

ADO.NET UPDATE

 

İlk yapmamız gereken güncellemek istediğimiz kategoriyi seçip değerlerini textbox kontrollere set etmek. (Bu işlemi bir önceki yazıda anlattığım için geçiyorum.)

Form tasarımımız;

ADO.NET Komutlar

Sürecimizdeki ilk adım olan combobox kontrolünden seçtiğimiz bir kategori nesnesinin CategoryName ve Description özelliğini form üzerindeki text kontrollere set edelim.

Bunun için combobox kontrolümün SelectedIndexChanged event'i benim isteğimi karşılayacaktır.

ADO.NET Komutlar

Kodumuzu okuyalım; Ben her combobox kontrolü içerisinde başka bir Category objesi seçtiğimde yani combobox kontrolünün her seçili nesnesi değiştiğinde bu event çalışacak ve sender objemin Combobox olduğunu bildiğim için casting işlemi ile önce combobox objemi yaratıp SelectedItem özelliğini kullanarak Categories class'ına ulaşıp, eğer seçilen category objesi "Select a Category" değilse (hatırlayacağınız gibi "Select a Category isimli Category" objesi'nin CategoryID'si 0) gerekli set işlemlerini yap demiş olduk.

Sıra geldi Update butonuna basıldığında seçili kategorinin name ve description özelliklerini güncellemekte.

ADO.NET Komutlar

 

ADO.NET DELETE

 

Sıra geldi son işlemimiz olan combobox kontrolümüzden seçtiğimiz kategori objesini silmeye.

Form tasarımımız;

ADO.NET Komutlar

Yaptığımız işlemlerin aslında sadece Sql sorgusu değiştirmekten ve biraz form tasarımıyla oynamaktan ileriye gitmediğini farketmişsinizdir. Önemli olan Connection nesnemizi açık şekilde unutmamak ve her zaman Sql Parameters ile verilerimizi işlemek.

ADO.NET Komutlar

 

Umarım sizler için de faydalı olmuştur. Görüşmek üzere.

Kaynak kodlar : Yiğit Özaksüt – github

 

 

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply