DataReader ile verilere erişim

Çeşitli ikonlar

Bu yazıda DataReader ile tablomuzdaki verileri nasıl kullanabileceğinizi göreceksiniz.

Öncelikle DataReader hakkında kısa bir bilgi vereyim. DataReader herhangi bir anda sadece bir satırlık kayda erişim imkanı veren, yalnızca okunabilir (read only) ve yalnızda ileri yönlü (forward only) erişimi destekleyen bir yapı sunar. Bu özellikleri ile sadece okuma ve listeleme amaçlı küçük veri setleri üzerinde kullanılması tavsiye edilmektedir. Burada dikkat edilmesi gereken önemli husus, verilerin serverin belleğinde tutulduğudur. Dolayısıyla büyük veri kümeleri üzerinde DataReader ile çalışmak performans açısından olumsuz bir durum ortaya koyacaktır.

Bir diğer önemli husus, DataReader ile bilgileri okurken veritabanı bağlantımızın sürekli açık olarak kaldığıdır. DataReader ile işimiz bittiğinde derhal DataReader i ve Connection'ı kapatmalıyız.

Aşağıda DataReader ile veritabanından veri okuma ile ilgili şekil durumu özetlemektedir.

data reader 

DataReader a veri yükleme için tabii ki bir Command'e, veritabanı bağlantısı için de tabii ki bir Connection'a ihtiyacımız olacak.

Öncelikle en üst satıra alttaki namespace imizi ekliyoruz ki ADO.NET nesnelerimizi kullanabilelim.

// SQL e bağlantı için gerekiyor
using System.Data.SqlClient; 

İşte kod örneği:

// Connection String oluşturuyoruz.
string sqlConn = "server=localhost; database=Veritabani; trusted_connection=true;";
// Connection nesnesini oluşturuyoruz.
SqlConnection conn = new SqlConnection(sqlConn);

// SQL cümleciği ile select ifadesini veriyoruz.
string cmdText = "select * from tabloadi where koşul order by Alanadi";
// Command nesnesini oluşturuyoruz.
// 2 bilgiye ihtiyaç var. 1- SQL stringi, 2-Connection nesnesi
SqlCommand cmd = new SqlCommand(cmdText, conn);

// Bağlantımızı elle açmak zorundayız.
conn.Open();

// veriyi okumak için datareader kullanıyoruz.
// new YOK dikkat!!!
SqlDataReader dr = cmd.ExecuteReader();

// verileri sırasıyla okumak için döngü kuruyoruz.
while (dr.Read())
  {
     // datareader in getxxx metotları ile verileri okuyabiliriz.
     // bu metotlar için kaçıncı sütunu okumak istediğimizi belirtiyoruz.
     // ilk sütun 0., sırasıyla 1., 2. vb. devam ediyor.
     // eğer kaçıncı sıradaki bilgi olduğunu bilmiyorsak
     // GetOrdinal(alanadı) metodu ile indexi elde edebilirsiniz.
     ListBox1.Items.Add(dr.GetString(0));
     // ListBox1.Items.Add(dr.GetString(dr.GetOrdinal("Ad")));
     //.. istediğimiz işlemleri yazıyoruz.
     //..
  }
dr.Close(); // DataReader imizi kapatıyoruz.

// işimiz bittikten sonra bağlantımızı kapatıyoruz.
conn.Close();
Örnek uygulamamız SQL Server üzerinde çalışmaktadır.