Forum

SqlDataReader ve Sq...
 
Bildirimler
Hepsini Temizle

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

4 Yazılar
3 Üyeler
0 Reactions
1,449 Görüntüleme
(@HuseyinTopcu)
Gönderiler: 111
Estimable Member
Konu başlatıcı
 

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;

        }

 

 

 

 

 

 

 

 
Gönderildi : 24/01/2015 19:53

(@yavuzcingoz)
Gönderiler: 36
Eminent Member
 

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.

 
Gönderildi : 30/01/2015 15:23

(@HuseyinTopcu)
Gönderiler: 111
Estimable Member
Konu başlatıcı
 

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.

 
Gönderildi : 30/01/2015 22:03

(@eravse)
Gönderiler: 1753
Üye
 

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. 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 30/01/2015 23:46

Paylaş: