ExecuteScalar, ExecuteNonQuery ve ExecuteReader
Tarih 18 Ocak 2010 Pazartesi, 16:10 | Etiket(ler) Asp.Net, Visual Basic, Sql ve Veritabanları
En çok sorulan sorulardan biri ExecuteScalar, ExecuteNonQuery ve ExecuteReader metodlarının ne işe yaradıkları ve birbirlerinden ne farklarının olduğudur. Asp.Net e yeni başlayanların kafasını kurcalayan bu konuyu sade ve yalın olarak, çok fazla teknik cümleler kurmadan basit bir şekilde anlatmaya çalışacağım. Herbirinin kullanım alanlarının farklı olduğunu söylemekle başlayalım.
ExecuteScalar :
Geriye object tipinde değer döndüren bu alan, aynı zamanda geriye tek bir değer döndürür. Gönderilen SQL sorgusunda geriye ne kadar satır veya sütun dönerse dönsün sadece ilk satırın ilk sütunu sonuç olarak alınabilir. Genelde SUM, COUNT, AVG, MAX, MIN vs. gibi tek veri istenilen sorgularda kullanılır. Ya da veritabanında kayıtlı olan bir kaydın kontrol edilebilmesi için uyarlanabilir. Örneğimize geçelim.
Dim Veritabani As New SqlConnection("server=SERVER;database=ORNEKDB;user=USER;password=PASS;")
Dim Sql As New SqlCommand("SELECT COUNT(ID) FROM tablo_adi;", Veritabani)
Try
Veritabani.Open()
' lblSonuc isimli label a tablo_adi tablosunda kaç kayıt olduğunu yazdırıyoruz
lblSonuc.Text = Sql.ExecuteScalar.ToString
Catch ex As Exception
Response.Write(ex.Message)
Finally
Veritabani.Close()
End Try
ExecuteNonQuery :
Geriye Integer olarak DELETE, INSERT, UPDATE komutları sonucu kaç kayıdın etkilendiği döndürüyor. Diğer bir deyişle DELETE sql komutunu kullandığınızda kaç kayıt silindiğini, INSERT komutunu kullandığınızda kaç kayıt eklendiğini, UPDATE komutunu kullandığınızda kaç kayıdın güncellendiğini söylüyor. Veritabanı üzerinde kayıtlar ile ilgili değişiklik yapacağımız zaman bu metodu kullanıyoruz. Örnek verirsek.
Dim Veritabani As New SqlConnection("server=SERVER;database=ORNEKDB;user=USER;password=PASS;")
Dim Sql As New SqlCommand("UPDATE tablo_adi SET SAYI = 1;", Veritabani)
Try
Veritabani.Open()
' lblSonuc isimli label a tablo_adi tablosunda kaç kayıt değiştiğini yazıyoruz
Dim sonuc As Integer = Sql.ExecuteNonQuery
If sonuc > 0 Then
lblSonuc.Text = sonuc.ToString
Else
lblSonuc.Text = "Hiçbir kayıt düzenlenmedi"
End If
Catch ex As Exception
Response.Write(ex.Message)
Finally
Veritabani.Close()
End Try
ExecuteReader :
Bir veritabanından SELECT sorgusu ile çektiğimiz kayıtların veri akışını sağlar. SELECT sql sorgusu sonucunda dönen kayıtların hepsini satır ve sütun bazında herhangi bir veri kaynağına aktarmamızı ya da direkt olarak basmamızı kolaylaştırır. Dönen sonuçlar SqlDataReader nesnesi üzerinden aktarılır.
Dim Veritabani As New SqlConnection("server=SERVER;database=ORNEKDB;user=USER;password=PASS;")
Dim Sql As New SqlCommand("SELECT * FROM tablo_adi;", Veritabani)
Try
Veritabani.Open()
Dim sonuclar As SqlDataReader = Sql.ExecuteReader
' Geri dönen tüm sonuçları ekrana bastırıyoruz.
While sonuclar.Read
Response.Write(sonuclar.Item("ADI"))
Response.Write(sonuclar.Item("SOYADI"))
End While
sonuclar.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
Veritabani.Close()
End Try
Genel kullanım alanları basit olarak bu şekilde anlatılabilir. Umarım kafanızda soru işareti kalmamıştır. Tüm sorularınız için benimle iletişime geçebilirsiniz.
Yorumlar
Tarih 21 Ocak 2010 Perşembe, 23:21 | Yazan Cenk SARI

sende yorum canavarı olmuşsun abi :)
Tarih 21 Ocak 2010 Perşembe, 22:02 | Yazan Selman Mert

makale canavarı oldun bu aralar, umarım devam eder.
Yorum yazın
Geri Dön | Ana Sayfaya Dön