SqlDataReader ile SqlDataAdapter Arasındaki Fark

  • 06.04.2011 10:59
  • SQL
  • 14587

               Bu makalede bir basligindan da anlasilacagi üzere SqlDataReader ve SqlDataAdapter arasindaki farki görebilmemiz için ufak bir test yaptim. Ve datareaderin daha hizli oldugu açik bir sekilde belli oldu. Tavsiyem veritabani islemlerinizde SqlDataReader kullanmanizdan yanadir.
               Asagida yaptigim test 46.350 satirlik bir tablo üzerinde gerçeklestirilmistir. Test ettiginizde farkin ne kadar büyük oldugunu siz de anlayacaksiniz.









Kodlar:

void Test1()

{

   DateTime baslangic = DateTime.Now;

   SqlConnection con = new SqlConnection("Data Source=.; DataBase=Norm; user=sa; password=123456");

   con.Open();

   SqlCommand cmd = new SqlCommand("Select * From tblFaturalar", con);

   SqlDataReader reader = cmd.ExecuteReader();

 

   List<string> s = new List<string>();

   while (reader.Read())

   {

      s.Add(reader.GetValue(0).ToString());

   }

   MessageBox.Show("Data Reader Hizi: "+(DateTime.Now - baslangic).ToString());

}

 

void Test2()

{

   DateTime baslangic = DateTime.Now;

   SqlConnection con = new SqlConnection("Data Source=.; DataBase=Norm; user=sa; password=123456");

   con.Open();

   SqlCommand cmd = new SqlCommand("Select * From tblFaturalar", con);

   SqlDataAdapter da = new SqlDataAdapter(cmd);

   DataTable dt = new DataTable();

   da.Fill(dt);

           

   List<string> s = new List<string>();

   for (int i = 0; i < dt.Rows.Count; i++)

   {

      s.Add(dt.Rows[i][1].ToString());

   }

   MessageBox.Show("Data Adapter Hizi: "+(DateTime.Now - baslangic).ToString());

}

 

private void button1_Click_1(object sender, EventArgs e)

{

   Test1();

}

 

private void button2_Click(object sender, EventArgs e)

{

  Test2();

}

Siz de düşüncelerinizi yazabilirsiniz:

;