ASP.NET SQL Command Sınıfı Nesneleri 78127812 okunma
Veritabanı ile bağlantıyı arttırmak, tabiri diğeriyle daha fazla işlem yaptırmak için 4 işlem yaptırırız. Bunları C# üzerinde Command sınıfı nesneleri ile yaptırırız.
Command Sınıfı Nesneleri
Command, komut manasına gelen bir sınıftır. Bu sınıfın içerisinde 4 tane nesne bulunur ki bunlarla ayrı ayrı işlemler yaptırılır.
Bunlar:
- ExecuteScalar()
- ExecuteNonQuery()
- ExecuteReader()
- ExecuteXmlReader()
Bu makalemizde ilk iki nesnelerle gerekli işlemleri yapacağız.
ExecuteScalar()
Bu command sınıfı nesnesi, geriye veri döndürebilir. Bunun için Select sorgularını çalıştırmak için kullanılır. Select ile sorguya başlarız, kayıt sayısı, toplam gibi işlemleri tek bir sütun veri dönen sorguları çalıştırırız.
Isterseniz yeni bir sayfa açın, isterseniz yeni bir proje başlatın. Bu nesneyi kullanmamız için öncelikle label ekleyelim ve ID kısmını LblYazi yapalım (ya da siz nasıl isterseniz).
Label ekledikten sonra sayfada sağ tuş ile view code diyerek Code Behind kısmına geçelim. Default.aspx.cs dosyası üzerinde çalışacağız.
Öncelikle veritabanına bağlanacağımız için using kütüphanelerini (Data ve SqlClient) ekliyelim. Ardından connectionstring’i yazalım.
Page_Load kısmına gelerek try-catch bloğu oluşturalım ve bağlantımızı açalım.
Command sınıfı demiştik. Bu sınıftaki nesneleri SqlCommand komutu ile çağırırız. Kullanımı şöyledir:
SqlCommand OrnekKomut = new SqlCommand();
OrnekKomut benim verdiğim bir isimdir, sizler dilediğinizi yazabilirsiniz.
Şimdi bu komutu açtığımız bağlantı kodunun bir altına yazalım.
New SqlCommand(); komutunda parantezden sonra sorgu yazdırılır. Yani veritabanından istediğimiz neyse, o sorguyu yazarız. Ardından bir virgül koyarak oluşturduğumuz bağlantı nesnesini çağırırız ve parantezi kapatırız.
Örneğin aşağıdaki resimde ürünler tablosundaki toplam kayıt neyse onu istemişim.
Şimdi ise bu verileri label’a aktarmamız gerekiyor.
LblYazi.Text=OrnekKomut.ExecuteScalar().ToString(); komutunu da eklediğimiz zaman projemiz tamamdır.
Tabi bağlantıyı Baglanti.Close(); ile kapatmayı unutmamak lazım.
Yukarıdaki resimde eklemiş olduğumuz komutu şöyle açıklayalım.
Oluşturduğumuz label’ın id’sini çağırdık ve yine oluşturduğumuz command sınıfı nesnesini çağırdık, bunu ExecuteScalar ile çalıştırmasını söyledik ve bunu metine çevirerek yazmasını belirttik. ToString ile metine çevirdik (çünkü sorgumuz sayısal bir değer döndürektir).
Kısacası yaptığımız iş tablomuz için oluşturduğumuz OrnekKomut sorgusunu ExecuteScalar ile çalıştırdık ve bunu ToString ile metine dönüştürdük. Hepsi bu kadar.
ExecuteNonQuery()
ExecuteScalar() ile geriye değer döndürüyorduk. ExecuteNonQuery ile geriye değer döndürmeyen sorgular yazılır. Yani Insert, Delete, Update sorgularını çalıştırabiliriz.
Bu sorgular bildiğiniz üzere veritabanında etkili olurlar. Veritabanımda herhangi bir tabloyu açıyorum. Yapmak istediğim işlemi seçiyorum. Örneğin kategoriler tablosuna bir kayıt eklemek istiyorum. Bunu şüphesiz ki Insert komutu ile yapacağız.
Aşağıda gördüğünüz gibi veritabanı tablomda 6 tane kategori var.
Şimdi ExecuteScalar() ile yaptığımız işlemleri silmeyelim. Baglanti.Close(); yerini biraz açalım ve araya ExecuteNonQuery() örneğimizi yapalım.
Diğer Ürünler isminde kategori oluşturmamızı istediler diyelim. Bunun aşağıdaki komutları girmemiz gerekecektir:
SqlCommand SatirEkle = new SqlCommand (“Insert Into Kategoriler (Kategori) Values (‘Diğer Ürünler’)”, Baglanti);
SatirEkle.ExecuteNonQuery();
Baglanti.Close();
Burada ne yaptım? Yeni bir sorgu nesnesi oluşturdum. Ardından oluşturmuş olduğum SatirEkle nesnesini ExecuteNonQuery() ile çalıştırdım. Label vs. eklememiz gerekmiyor çünkü bunu veritabanına ekleyeceği için bakmamız gereken yer veritabanı olacaktır.
Şimdi projemizi çalıştıralım ve veritabanımıza bakalım.
Diğer Ürünler satırını eklemiş. Görüldüğü gibi en çok kullanılan command sınıfı nesneleri bu şekilde kullanılmaktadır.
Kolay gelsin.
Recep ŞERIT
BİR YORUM YAZIN