Mars Kavramı
Mars Kavramı
MARS(MultipleActiveResultSets) Ado.Net 2.0 ile gelen bir yeniliktir. Mars kısaca; Bir açık bağlantıda birden fazla SqlDataReader nesnesinin çalışmasıdır. Ancak MARS başka kavramlarla karıştırılmamalıdır. Bunun için bazı örnekler göstereceğim:
MARS ne değildir?
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True"); SqlCommand cmd = new SqlCommand("SELECT ProductName FROM Products; Select CategoryName From Categories", conn); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { LstUrunler.Items.Add(dr[0].ToString()); } dr.NextResult(); while (dr.Read()) { LstKategori.Items.Add(dr.GetString(0)); } |
Tek bir SqlCommand sorgumun içerisine sırasıyla iki sorgu yazdım ve tek datareader nesnem ile sırayla sorguları çektim. Bu örneğimiz MARS yapısı değildir.
Mars açık bir bağlantıda birden fazla select sorgusunu çalıştırmak için kullanılmaz. Birden fazla sqldatareader nesnesi çalıştırmak için kullanılır.
MARS ile ilgili örneğimize bakalım şimdide:
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets= true"); //Mars kullanımında "MultipleActiveResultSets=true" tanımlanmalıdır. SqlCommand cmdKategori = new SqlCommand("Select CategoryID,Categoryname From CAtegories", conn); conn.Open(); SqlDataReader drKategori = cmdKategori.ExecuteReader(); while (drKategori.Read()) { TreeNode trnKategori = new TreeNode(); trnKategori.Text = drKategori.GetString(1); SqlCommand cmdUrun = new SqlCommand("SELECT ProductName From Products Where CategoryID=@ID", conn); cmdUrun.Parameters.AddWithValue("@ID", drKategori[0]); SqlDataReader drUrun = cmdUrun.ExecuteReader(); while (drUrun.Read()) { TreeNode trUrun = new TreeNode(); trUrun.Text = drUrun.GetString(0); trnKategori.ChildNodes.Add(trUrun); } drUrun.Close(); TreeView1.Nodes.Add(trnKategori); } conn.Close(); // TreeView kontrolü kapalı liste şeklinde gelsin TreeView1.CollapseAll();
|
SqlConnection nesnemize "MultipleActiveResultSets= true" yazıyoruz. Mars kullandığımızda Connection nesnemize bunu eklememiz gerekir.
ETİKETLER: Mars Nedir, mars kavramı, ,