MARS(Multiple Active Result Sets)

MARS nedir??


MARS(Multiple Active Result Sets) ADO.NET 2.0 ile gelen tek bağlantı ile birden çok stored proc select vs. işlem yapmamıza olanak veren bit teknikdir.


Normal ADO.NET teknigi ile bu işi halletmeye kalksak ya iki ayrı bağlantı tanımlanacak yada bir işlem bittikden sonra diğerine geçmeden önce bağlantıyı kapatıp açmak gerekir.


Herşeyi doğru yazdınız ama yinede bir hata varsa dikkat etmeniz gereken bi yer var.

ConnectionString imizde MultipleActiveResultSets = true gözden kaçırmamanız gerekir.


Arasında ki farkı görmek için kendiniz önce normal bildigimiz yöntemle yazın daha sonra MARS tekniğini uygulayın böylece arasındaki farkı daha bariz farkedeceksiniz.


SqlConnection sqlCon = new SqlConnection("data source=localhost;initial catalog=TEST;integrated security=SSPI;MultipleActiveResultSets = true");
SqlCommand cmd1 = new SqlCommand("Select * From Musteri", sqlCon); //Müşteri listem
SqlCommand cmd2 = new SqlCommand("Select * From Siparis where M_ID=@MID", sqlCon); //Müşteri siparişleri listem

cmd2.Parameters.Add("@MID", System.Data.SqlDbType.Int);
SqlDataReader dr1;
SqlDataReader dr2;
sqlCon.Open();
dr1 = cmd1.ExecuteReader();
while (dr1.Read()) //müşteri listemden okumaya başladım 1. Müşterim
{
Console.WriteLine(dr1[1].ToString());
Console.WriteLine("-----------------------------");
Console.WriteLine("");
cmd2.Parameters["@MID"].Value = dr1[0]; //ID sini siparişe yolluyorum.
dr2 = cmd2.ExecuteReader(); // buraya dikkattt... Siparisler okunmaya başladı..
while (dr2.Read())
{
Console.WriteLine(dr2[2].ToString()); // siparişler listeleniyor.
}
dr2.Close(); // tüm siparişleri listeledik işimiz bitti kapattık dataReader ımızı.
}
sqlCon.Close();
Console.ReadLine();


Özet olarak anlatacak olursak :

1. db ye bağlandık

2. sorgu çekmek için komutlarımızı hazırladık

3. SqlDataReader larımızı tanımladık (Biri müşteri listesi, Diğeri Siparişler için)

4. Müşteri listesini almaya başladık. (1. müşteri adı ve ID aldık sonraki satırlarda siparişler için kullanacagız.)

5. Bu kezde müşterinin ID sini komut satırına yolladık ve müşteri ye ait siparişleri listelemeye başladık.

6. siparişleri okudugumuz SqlDataReader i kapattık.

7. Takip eden satırlar....


Ekran çıktısı şöle oluyor...






Yorum Gönder