Uygulama ile SQL Server arasında SQL komut cümlelerinin, saklı yordam(stored procedur) isimlerinin, gerekli parametre isimleri ve değerlerinin taşınmasını sağlayan sınıftır. Bu makalemizde bu sınıf ile ilgili özellike ve detaylarını göreceğiz.
Uygulama ile SQL Server arasında SQL komut cümlelerinin, saklı yordam(stored procedur) isimlerinin, gerekli parametre isimleri ve değerlerinin taşınmasını sağlayan sınıftır. Taşıdığı SQL komut cümlesini ya ada çağıracağı saklı yordamın ismini, SQL Server tarafında yürütme ve çıkan sonuçları ya da etkilenen kayıt sayısını geriye gönderme özelliklerine de sahiptir. SQLCommand sınıfının en sık kullanılan özellik ve metodları kısaca incelenmektedir.
SQLCommand Nesnesinin En Sık Kullanılan Özellik ve Metodları
CommandText
Parametresi ya da parametresiz sql cümlelerinin, parametre bekleyen y ada beklemeyen saklı yordam isimlerinin atanabileceği özelliktir.
CommandType
CommandText özelliğinde belirtilen string ifadenin; saklı yordam olarak mı yoksa, Text ifade olarak mı değerlendirileceğini belirten özelliktir. Varsayılan olarak Text değerine sahiptir. Ancak saklı yordam(stored procedure) olarak kullanılacaksa, özellikle belirtilmesi gerekmektedir.
Connection
SqlCommand nesnesinin içerdiği sorguların hangi sunucu ve veri tabanında çalıştırılması gerektiği ile ilgili bağlantı nesnesini tutan özelliktir.
ExecuteReader()
Geriye veri yada veri blokları dönen SQL cümleleri veya saklı yordamları çalıştırılan ve bunların sonuçlarının uygulama tarafına alınabilmesini sağlayan metottur. Bu metot ile uygulama tarafına gelecek sonuçlar, DataReader adı verilen ve veri sağlayıcıya(data provider) göre değişen bir tip yardımıyla okunabilmektedir. Özellikle içeriği çok fazla değişmeyen ve az sayıda satır içeren veri kümelerinin uygulama ortamına daha hızlı bir şekilde alınabilmesini sağlayan modellerde tercih edilmektedir.
ExecuteNonQuery()
Yazılan SQL cümlesi ya da SQL Server tarafındaki saklı yordamın(stored procedure) çalıştırılması ve bu işlem ya da işlemler sonucunda etkilenen kayıt sayısının geriye alınabilmesini sağlayan metottur. Ancak burda dikkat edilmesi gereken nokta, geriye sadece tam sayı tipinde bir değer dönmesidir. Bu nedenle, genellikle veri tabanına değer gönderirken; yani, insert, update ve delete işlemleri için kullanılır. Sonrasında da bu işlemlerden etkilenen kayıt sayısı geriye alınmaktadır. Böylece örneğin güncellenen satır sayısı elde edilip kullanılabilir.
ExecuteScalar()
ExecuteNonQuery() metodu gibi, yazılan SQL cümleleri veya saklı yordamları çalıştırmak için kullanılır. Bu metodun farklı olduğu nokta ise; geriye sadece tek bir object tipinde sonuç dönen sorgular için kullanılmasıdır. Bu metodlai select işleminden dönecek olan scalar kayıtlar alınabilmektedir. Örneğin, gruplama fonksiyonları içeren sorgu cümlelerinin sonuçlarını elde etmekte kullanılabilir.
ExecuteXmlReader()
Sadece SQLCommand sınıfında(class) bulunan bu metot; SQL Server üzerinden gelen verinin, XML(Extensible Markup Language) formatında alınabilmesini sağlar.
SQLCommand Kullanım Örnekleri
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | SqlCommand komut = new SqlCommand (); komut.CommandText = "Insert INTO Tablo (Alan1, Alan2, Alan3)"+ "VALUES (deger1,deger2,deger3)"; komut.Connection _ baglanti; komut.CommandType = CommandType.Text; baglanti.Open(); int etkilenenKayitSayisi = komut.ExecuteNonQuery(); baglanti.Close (); SqlCommand cmd = new SqlCommand (); cmd.CommandText = "UPDATE tablo Set alan1=deger1, "+ "alan2= deer2 where alan=deger"; //commandtype beltilmek zorunda değildir. baglanti.Open(); cmd.ExecuteNonQuery(); baglanti.Close (); SqlCommand cmd = new SqlCommand (); cmd.CommandText = "select count (*) from tablo"; cmd.CommandType = CommandType.Text ; cmd.Connection = baglanti; baglanti.Open(); int kayitsayisi = (int)cmd.ExecuteScalar (); baglanti.Close (); SqlCommand cmd := new SqlCommand (); cmd.CommandText = "SP_TumVerileriGetir"; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = baglanti; baglanti.Open(); SqlDataReader rdr = cmd.Execute.Reader (); baglanti.Close (); |