﻿
{"id":222,"date":"2012-03-18T19:04:33","date_gmt":"2012-03-18T19:04:33","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=222"},"modified":"2012-04-23T17:09:50","modified_gmt":"2012-04-23T17:09:50","slug":"ado-net-tek-sqlcommand-nesnesinde-birden-cok-sorgu-calistirmak","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/ado-net-tek-sqlcommand-nesnesinde-birden-cok-sorgu-calistirmak\/","title":{"rendered":"ADO.NET Tek SqlCommand Nesnesinde Birden \u00c7ok Sorgu \u00c7al\u0131\u015ft\u0131rmak"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda tek SqlCommand nesnesinde birden \u00e7ok sorguyu nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 anlataca\u011f\u0131m.SqlCommand nesnemizde birden fazla \u00e7al\u0131\u015facak sorgu tan\u0131mlay\u0131p,tek seferde s\u0131rayla hepsini \u00e7al\u0131\u015ft\u0131rabiliriz.<br \/>\n<!--more--> T-SQL de birden \u00e7ok sorguyu yan yana \u00e7al\u0131\u015ft\u0131rmak i\u00e7in &#8220;;&#8221; karakterini kullan\u0131yoruz.SqlCommand nesnemizin CommandText \u00f6zelli\u011fine sorgular\u0131 aralar\u0131na &#8220;;&#8221; karakterini koyarak yazabiliriz.<br \/>\n\u00d6ncelikle a\u015fa\u011f\u0131daki \u00f6rnekler de bir tane ListBox kontrol\u00fc kullanaca\u011f\u0131m\u0131 \u015fimdiden de\u011finmek isterim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            SqlConnection baglanti = new SqlConnection(&quot;Server=GEN\u00c7AY-GEN\u00c7AY;database=northwind;trusted_connection=true;&quot;);\r\n            baglanti.Open();\r\n            SqlCommand cmd = new SqlCommand(&quot;Select Adi,Soyadi from Personeller;Select PersonelId,Sehir from Personeller&quot;, baglanti);\r\n            SqlDataReader dr = cmd.ExecuteReader();\r\n<\/pre>\n<p>Yukarda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi SqlCommand nesnemize 2 tane sorgu eklenmi\u015ftir.C# ile bu sorgular\u0131 s\u0131rayla okutmam\u0131z gerekecektir.Tabi ilk etapta 1. sorguyu okuyor ve SqlDataReader nesnemize verileri cekiyor.As\u0131l mevzu sisteme SqlCommand&#8217;\u0131m\u0131zda ba\u015fka sorgu var m\u0131 yok mu ? kontrol ettirmemiz gerekiyor.E\u011fer varsa onu okutmam\u0131z gerekiyor.Bu kontrol\u00fc yapmadan bool tipinden bir de\u011fi\u015fken olu\u015fturuyorum.Bak\u0131n \u015fimdi ne yapacam.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nbool baskasorguvarmi;\r\n            do\r\n            {\r\n                while (dr.Read())\r\n                {\r\n                    listBox1.Items.Add(dr&#x5B;0] + &quot; &quot; + dr&#x5B;1]);\r\n                }\r\n                baskasorguvarmi = dr.NextResult();\r\n            } while (baskasorguvarmi);\r\n\r\n            baglanti.Close();\r\n<\/pre>\n<p>Yukardaki kod blo\u011funu detayl\u0131 anlatmaya \u00e7al\u0131\u015f\u0131y\u0131m.\u0130lk sorgumuzdaki veriler SqlDataReader&#8217;a y\u00fcklendi\u011finden ilk etapta ListBox kontrol\u00fcne ilk sorgunun &#8220;Adi&#8221; ve &#8220;SoyAdi&#8221; kolonlar\u0131 y\u00fckleniyor.While d\u00f6ng\u00fcs\u00fc bittikten sonra SqlDataReader(dr) nesnemizi dr.NextResult() metoduyla kontrol ediyoruz.<br \/>\nNextResult() metodu \u015fu anlama geliyor.E\u011fer SqlDataReader(dr) i\u00e7indeki SqlCommand(cmd) i\u00e7inde &#8220;;&#8221; karakteriyle ayr\u0131lm\u0131\u015f ba\u015fka sorgu var m\u0131?Varsa True,yoksa False d\u00f6necektir.VE E\u011eER TRUE D\u00d6N\u00dcYORSA OTOMAT\u0130KMAN D\u0130\u011eER SORGUYU AKT\u0130F HALE GET\u0130R\u0130R.Ve bu de\u011feri bool tipindeki baskasorguvarmi de\u011fi\u015fkenine at\u0131yoruz.<br \/>\nVarsayal\u0131m True d\u00f6nd\u00fc ve otomatikman di\u011fer sorgu aktif hale getirildi.Do while d\u00f6ng\u00fcs\u00fc yeniden faaliyete ge\u00e7ti.Program ak\u0131\u015f\u0131 Do while d\u00f6ng\u00fcs\u00fc i\u00e7inde ki while d\u00f6ng\u00fcs\u00fcne girdi\u011fi zaman bu sefer 2. sorgudaki &#8220;PesonelId&#8221; ve &#8220;Sehir&#8221; verileri ListBox&#8217;umuza eklenecektir.<br \/>\nFark\u0131ndaysan\u0131z SqlDataReader(dr)&#8217;dan verileri \u00e7ekerken dr[&#8220;KolonAdi&#8221;] \u015feklinde de\u011filde dr[indexNo] \u015feklinde girdik.Bunun sebebi,di\u011fer sorgudaki kolon isimleriyle ilk sorgudakilerin uyumlu olmama riskidir.\u0130lk d\u00f6n\u00fc\u015fte ilk sorgudaki &#8220;Ad\u0131&#8221; isimli kolon \u00e7ekilirken,ikinci d\u00f6n\u00fc\u015fte ikinci sorgudaki \u00e7ekilen kolonun ad\u0131 &#8220;Ad\u0131&#8221; olmayabilir.Ha birde sorgulardaki kolon say\u0131lar\u0131 ayn\u0131 olmas\u0131na dikkat edin.\u0130\u015finiz daha kolay olur.Farkl\u0131 olursa e\u011fer \u015fartlarla,d\u00f6ng\u00fclerle i\u015flemlerimiz ger\u00e7ekle\u015ftirilebilir(dr.FieldCount).Burada anlatmak istedi\u011fim \u00e7ok kar\u0131\u015f\u0131k olmu\u015f olabilir \ud83d\ude42<br \/>\nFark\u0131nday\u0131m bu yaz\u0131m \u00e7ok kar\u0131\u015f\u0131k oldu.Ama umar\u0131m faydas\u0131n\u0131 g\u00f6r\u00fcrs\u00fcn\u00fcz \ud83d\ude42 Sonraki yaz\u0131larda g\u00f6r\u00fc\u015fmek dile\u011fiyle<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda tek SqlCommand nesnesinde birden \u00e7ok sorguyu nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 anlataca\u011f\u0131m.SqlCommand nesnemizde birden fazla \u00e7al\u0131\u015facak sorgu tan\u0131mlay\u0131p,tek seferde s\u0131rayla hepsini \u00e7al\u0131\u015ft\u0131rabiliriz.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,22],"tags":[129,133],"class_list":["post-222","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","category-veritabani","tag-ado-net","tag-sqlcommand"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=222"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/222\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}