SqlDataReader ve Sq...
 
Bildirimler
Hepsini Temizle

SqlDataReader ve SqlDataAdapter ile geriye list döndüren methot  

  RSS
Hüseyin Topçu
(@HuseyinTopcu)
Üye

Merhaba aşağıdaki gibi bir metodum var. SqlDataReader ile kullanıyorum SqlDataAdapter ile kullanırsam sık yapılan sorgularda daha performanslı çalışır mı? Ve şunu da sorayım bu sorgu sizce en iyi nasıl yazılır?

 

public List<Icerik> Yazilar()

        {

            List<Icerik> yazilar = new List<Icerik>();

            SqlConnection conn = new SqlConnection(Helper.Baglanti);

            SqlCommand cmd = new SqlCommand("sorgu cümlesi", conn);

            conn.Open();

            SqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())

            {

                Icerik i = new Icerik();

                i.IID = (int)rdr[0];

                i.IcerikBaslik = rdr[1].ToString();

                i.IcerikVideoOzet = rdr[2].ToString();

                i.IcerikResimYolu = rdr[3].ToString();

                yazilar.Add(i);

            }

            conn.Close();

            return yazilar;

        }

 

 

 

 

 

 

 

Alıntı
Gönderildi : 24/01/2015 18:53
Yavuz Cingöz
(@YavuzCingoz)
Üye

SqlDataAdapter tüm veriyi RAM üzerine yükler, dolayısıyla DataReader'a göre oldukça düşük performansla çalışır. DataReader ise sadece ileri doğru okur. bu nedenle yazdığın kod mantıklı görünüyor. Ama, tablonda çok fazla veri varsa EntityFramework ve LinqToEntity kullanmalısın.

CevapAlıntı
Gönderildi : 30/01/2015 14:23
Hüseyin Topçu
(@HuseyinTopcu)
Üye

Teşekkür ederim verdiğin fikirden dolayı. EntityFramework'ü biraz araştırmıştım zaman kazandırıyor ama şimdilik değişiklik yapmak istemiyorum.

CevapAlıntı
Gönderildi : 30/01/2015 21:03
Erdem SELÇUK
(@eravse)
Saygın Üye Forum Yöneticisi

Yavuz hocaya ek olarak SqlDR ve SQL DA hakkında şunlarıda söyleyebiliriz. 

SqlDataReader:

İşiniz bitene kadar açık bağlantı tutar (kapatmayı  unutmayın!).

Genellikle sadece bir kez üzerinde iterated Can

Veritabanına güncelleme için çok kullanışlı değildir.

Fakat diğer yandan ;:

Bütün sonuç kümesini ( sorgu çalıştırdığınızda dönen değerleri) bellekte tutar. 

Yenileme işlemlerinde bellekte tutulduğundan bir işeleme yada kayıda çok hızlı ulaşabilirsiniz.

Her yaptığınız işlemi sıfırdan başlatarak yeni bir proccess sağlar.

SqlDataAdapter / DataSet

İşlemlerinizi hemen yapmak istiyorsanız sizin için otomatik olarak bağantıyı kapatabilir.

Bütün sonuşlardan ziyade sadece fokus olduğunuz sonuşları mevcut kullanılabilir belleğinizde tutar.

Bir sonuç üzerinde birden fazla yenileme güncelleme yapacak iseniz veya spesifik bir kayda bakacak iseniz performanslıdır

Reader'a oranla çok daha yüksek bellek kullanımı vardır.

Kullanmadan önce tüm verilerin yüklenmesini beklersiniz.

Bu farklar yani gerçekten ne yaptığınızı bağlıdır. SqlDataReader salt okunur bir veri kümesine bağlanablmek için idealdir. 

CevapAlıntı
Gönderildi : 30/01/2015 22:46
Paylaş: