<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurullah DEMİR - The day will come just wait.. &#187; SQL Server</title>
	<atom:link href="http://www.ndemir.com/kategori/_net/sql-server/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 04 Feb 2012 02:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SQL Server : Triggers</title>
		<link>http://www.ndemir.com/_net/sql-server/sql-server-triggers</link>
		<comments>http://www.ndemir.com/_net/sql-server/sql-server-triggers#comments</comments>
		<pubDate>Sun, 11 Jul 2010 14:44:28 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[sql server da triggerler nasıl hazırlanır]]></category>
		<category><![CDATA[sql server procedure yazma]]></category>
		<category><![CDATA[sql server tetikleyici]]></category>
		<category><![CDATA[sql server trigger]]></category>
		<category><![CDATA[sql server trigger nedir]]></category>
		<category><![CDATA[sql server trigger oluşturma]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2413</guid>
		<description><![CDATA[SQL Server&#8217;da bilmemiz gereken başka birşey ise trigger&#8217;lardır. Bunları C# da gördüğümüz event lara benzetebiliriz. Şu şey meydana gelince bunu yap şeklinde. Örneğin bir kategori silindiğinde ona bağlı olan tüm ürünlerin kategorisini değiştirmek yada o kategoriyi silmek istiyorsunuz. Bunu SQL Server&#8217;da Trigger yapısı ile çok kolay bir şekilde gerçekleştirebiliriz. Bahsettiğim gibi, daha önce gördüğümüz olaylardan [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/sql.gif" alt="sql SQL Server : Triggers sql server " width="296" height="75" title="sql SQL Server : Triggers sql server " />SQL Server&#8217;da bilmemiz gereken başka birşey ise trigger&#8217;lardır. Bunları C# da gördüğümüz event lara benzetebiliriz. Şu şey meydana gelince bunu yap şeklinde.<br />
Örneğin bir kategori silindiğinde ona bağlı olan tüm ürünlerin kategorisini değiştirmek yada o kategoriyi silmek istiyorsunuz. Bunu SQL Server&#8217;da Trigger yapısı ile çok kolay bir şekilde gerçekleştirebiliriz. Bahsettiğim gibi, daha önce gördüğümüz olaylardan hiçbir farkı yok. Biz &#8220;Butona tıklanınca şunu yap&#8221;, &#8220;Mouse formun üzerine geldiğinde şunu yap&#8221; diye belirttiğimiz şeylerin trigger yapısı ile (görev olarak) farkı yoktur.</p>
<p>SQL Server da Trigger yapısı nasıl çalışır onu görelim şimdi ;</p>
<p>Trigger lar her tablonun altında Trigger klasörünün içerisinde bulunur. Biz triggerlerimizi bu klasörlerin altında yazacağız. Her tablonun kendine has trigger i olabilir, örneğin Kategoriler tablosu için yazılmış bir triggerın Urunler tablosu için hiçbir geçerliliği yoktur.</p>
<h5><strong>Triggerlar hakkında</strong></h5>
<p>Trigger yazarken önce şunu belirlemeliyiz;  trigger ne zaman çalışacak ? Yeni veri eklenirken mi, düzenlenirken mi silinirken mi, veri çağrılırken mi ?<br />
<span id="more-2413"></span><br />
2 çeşit trigger vardır, <strong>instead </strong>ve <strong>after </strong>trigger.</p>
<h6>Instead Trigger</h6>
<p>Belirtilen işlem gerçekleşmeden önce trigger tetiklenir.</p>
<h6>After Trigger</h6>
<p>Belirtilen işlem gerçekleştikten sonra trigger tetiklenir.</p>
<h5>Trigger nasıl yazılır ?</h5>
<p>Aşağıda verdiğim örnekte şu yapılıyor ; Bir kategori silinmek istenildiğinde, eğer o kategoriye bağlı Urunler tablosunda ürün varsa kategoriyi silme Aktif kolonunu(bizim kategorilerin aktif olup olmadığını kontrol için oluşturduğumuz bir kolon..) 0 yap (pasif yap). Eğer Urunler tablosunda bu kategoriye bağlı hiçbir ürün yoksa kategori silinebilir.</p>
<pre class="brush: sql; title: ; notranslate">
create trigger TriggerAdi on Kategoriler instead of delete
as
begin

Declare @katID int,@adet int

select @katID=KatID from deleted
select @adet=COUNT(*) from Urunler where UrunKatID=@katID

if(@adet=0)
delete from Kategoriler where KatID=@katID
else
update Kategoriler set Aktif=0 where KatID=@katID

end
</pre>
<p>Ne yaptığımızı açığa kavuşturalım şimdi.</p>
<p><strong>1.Satır</strong><br />
Burada trigger oluşturup adını yazdık ve bağlı olacağı tabloyu belirttik, daha sonra trigger in ne zaman tetikleneceğini belirttik (instead of delete, yani veri silinmeden önce, eğer after of delete yapsaydık, veri silindikten sonra tetiklenecekti)<br />
<strong>5.Satır</strong><br />
İki tane değişken tanımladık.  Bu değişkenlerde silinmek istenen verinin değerlerini saklayacağız.<br />
<strong>7.Satır</strong><br />
Burada katID değişkenine silinen satırdaki KatID kolonunu atıyoruz. Burada silinmek istenen kolona nasıl ulaşacağımıza gördük, from deleted ile<br />
<strong>8.Satır</strong><br />
adet değişkenine silinmek istenen kategoriye bağlı kaç ürünün olduğunu atadık<br />
<strong>10-13.Satır</strong><br />
Eğer 0 adet varsa kategorinin silinmesini istedik.<br />
Else ile de kategoriyi pasif hale getirdik.</p>
<p><strong>NOT : Eğer biz burada silme/değiştirme işlemi yapmasaydık, veriler silinmeyecekti aynen olduğu gibi kalacaktı.<br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/sql-server/sql-server-triggers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : SQL Server Stored Procedure Kullanımı</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi#comments</comments>
		<pubDate>Sat, 10 Jul 2010 07:47:59 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# commandtype]]></category>
		<category><![CDATA[c# procedure]]></category>
		<category><![CDATA[c# prosedür]]></category>
		<category><![CDATA[c# sql server procedure kullanımı]]></category>
		<category><![CDATA[c# sql server proedür hakkında]]></category>
		<category><![CDATA[c# sql server prosedür kullanımı]]></category>
		<category><![CDATA[c# sqlparameter]]></category>
		<category><![CDATA[c# stored prosedür]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[sql server procedure]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2397</guid>
		<description><![CDATA[Önceki yazımızda SQL Server da nasıl Stored Procedure yazılır onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz. Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra [...]]]></description>
			<content:encoded><![CDATA[<p>Önceki yazımızda <a href="http://www.ndemir.com/_net/sql-server/sql-server-prosedur-hk" >SQL Server da nasıl Stored Procedure yazılır</a><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " width="155" height="176" title="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
<p>Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz.<br />
Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra da açıklayalım.</p>
<p>Kategorilerimizi sakladığımız sınıfımız şöyle ;</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace OrnekUygulama
{
    class KategoriInfo
    {
        int katID;
        public int KatID
        {
            get { return katID; }
            set { katID = value; }
        }

        string katAdi;
        public string KatAdi
        {
            get { return katAdi; }
            set { katAdi = value; }
        }

        public KategoriInfo(int katIDs,string katAdi)
        {
            this.KatAdi = katAdi;
            this.KatID = katID;
        }
    }
}
</pre>
<p><span id="more-2397"></span><br />
<em>Sınıfı neden oluşturduğumuzdan bahsetmeyeceğim, yukarıda belittiğim yazıda detaylı olarak bahsedilmiştir.<br />
</em></p>
<p>Şimdi gelelim Stored Precedure kullanımına;</p>
<pre class="brush: cpp; title: ; notranslate">
   SqlConnection con = new SqlConnection(&quot;Connection Stringimiz..&quot;);
            SqlCommand cmd = new SqlCommand(&quot;KategorileriGetir&quot;, con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter _param = new SqlParameter(&quot;@kategoriDurum&quot;, SqlDbType.Int);
            _param.Value = 1;
            cmd.Parameters.Add(param);
            SqlDataReader _dr = cmd.ExecuteReader();
            List&lt;KategoriInfo&gt; listem = new List&lt;KategoriInfo&gt;();

            while (_dr.Read())
            {
                KategoriInfo info = new KategoriInfo(_dr.GetString(1), _dr.GetInt32(0));
                listem.Add(info);
            }
//Bu satırdan itibaren verilerimiz listem nesnesinde saklıdır. Bundan sonrası size kalmış : )
</pre>
<p>Şimdi ne yaptık onu açıklayalım.<br />
<strong>2. Satırda </strong><br />
SqlCommand da CommanString i yerine prosedürümüzün adını yazdık.</p>
<p><strong>3.Satırda</strong><br />
Daha sonra SqlConnection&#8217;a dedik ki ; sana verdiğimiz string i commandtext olarak algılama bunun tipi bir Stored Procedure ona göre davran. (Stored Procedure kullanmadığımız zamanlarda varsayılan değeri CommandText olarak atanır)</p>
<p><strong>Bu prosedürümüz dışarıdan değer alıyor mu ? Evet alıyor</strong><br />
<strong>4. Satırda</strong><br />
Prosedürümüz parametre alıyorsa bizim bu parametreyi göndermemiz gerekiyor. O yüzden 4. satırda yeni bir parametre tanımladım. Ve dedim ki ; bu parametremin adı &#8220;@kategoriDurum&#8221; değeri ise SqlDbType.Int dir.<br />
<strong>5.Satırda</strong><br />
Buraya kadar parametremizi tanımlamıştık, şimdi ise parametremizin değerini giriyoruz.<br />
<strong>6.Satırda</strong><br />
Son olarak ta SqlCommand a dedimki, sen şu parametreyi al sakla, sana verdiğim prosedürü çalıştırırken bu parametrelere ihtiyacın olacak ve Add metodu ile SqlParameter tipinde olan _param i ekledik.<br />
Eğer parametreleriniz çok ise, tek tek SqlParameter tipinde değerler oluşturmayın. SqlParameter[] olarak tanımlayın ve SqlCommand a AddRange metodu ile oluşturduğunuz diziyi ekleyin.</p>
<p>Gerisi zaten normal sql command çalıştırma ile aynı olduğundan burada nokta koyuyorum <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL Server : Stored Procedure hk.</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/sql-server-prosedur-hk</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/sql-server-prosedur-hk#comments</comments>
		<pubDate>Sat, 10 Jul 2010 07:11:15 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sql server da prosedür yazımı]]></category>
		<category><![CDATA[sql server procedure]]></category>
		<category><![CDATA[sql server procedure yazma]]></category>
		<category><![CDATA[Sql server prosedür]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2356</guid>
		<description><![CDATA[SQL Server yapısında bulunan çok güzel bir özellik. Metodlar gibi düşünebilirsiniz. Stored Procedure&#8217;ler; Veritabanımızın altında bulunan Programmability klasöründe Stored Procedure isimli klasörde bulunur. Yeni prosedür oluşturmak için Stored Procedure a sağ tuşla basıp &#8220;New Stored Procedure&#8221; diyoruz. Ve gelen pencereden prosedürümüzü yazmaya başlıyoruz.. Prosedürümüzü oluşturmaya create komutu ile başlıyoruz, Basit bir prosedür yazdık, Kategoriler tablosundaki [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/sql.gif" alt="sql SQL Server : Stored Procedure hk. sql server dot net c sharp " width="296" height="75" title="sql SQL Server : Stored Procedure hk. sql server dot net c sharp " />SQL Server yapısında bulunan çok güzel bir özellik. Metodlar gibi düşünebilirsiniz.</p>
<p>Stored Procedure&#8217;ler; Veritabanımızın altında bulunan Programmability klasöründe Stored Procedure isimli klasörde bulunur. Yeni prosedür oluşturmak için Stored Procedure a sağ tuşla basıp &#8220;New Stored Procedure&#8221; diyoruz. Ve gelen pencereden prosedürümüzü yazmaya başlıyoruz..</p>
<p>Prosedürümüzü oluşturmaya create komutu ile başlıyoruz,</p>
<pre class="brush: sql; title: ; notranslate">
create KategorileriGetir(@kategoriDurum int)
as
begin
if(@kategoriDurum=1)
select * from kategoriler where aktif=1
else
select * from kategoriler where aktif=@kategoriDurum
end
</pre>
<p><span id="more-2356"></span><br />
Basit bir prosedür yazdık, Kategoriler tablosundaki kategorileri çekmesini istiyoruz fakat hangi durumdaki (kategori pasifmi,aktif mi olarak ayarlanmış) kategorilerin getireleceğini gönderdiğimiz parametre ile biz seçiyoruz. Bu yüzden prosedür adından sonra parantez açıp dışardan alacağı parametre adını ve türünü yazdım. Prosedürümüzün tüm kodları begin ile end komutu arasında bulunur. Biz bu blogda, dışardan gelen verinin türüne bakarak istenilen durumdaki kategorileri gönderdik.<br />
İlla dışarıdan parametre alacak diye birşey yok, metodlardaki gibi dedi ya gerçektende öyle. İster dışarıdan parametre alır, ister almaz. Bunu da biz belirliyoruz.<br />
Parametre almayan bir prosedüre örnek ;</p>
<pre class="brush: sql; title: ; notranslate">
create KategorileriGetir
as
begin
select * from kategoriler
end
</pre>
<p>Parametrelerimizin default özellikleri input dur. Yani parametre dışarıya değerini göndermez, dışardan aldığı değer ile içeride işlem yapar ve işlemi biter. Parametrelerimizi output olarak da ayarladıktan sonra prosedürün çağrıldığı yerden output özellikli parametrenin değeri okunabilir.<br />
<a href="http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi"><br />
C# SQL Server Stored Prosedür kullanma</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/sql-server-prosedur-hk/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : SQL Server</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server#comments</comments>
		<pubDate>Mon, 28 Jun 2010 09:06:23 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# ile sql server kullanımı]]></category>
		<category><![CDATA[c# örnek uygulama]]></category>
		<category><![CDATA[c# sql server bağlanma]]></category>
		<category><![CDATA[c# sql server bağlantısı]]></category>
		<category><![CDATA[c# sql server connection]]></category>
		<category><![CDATA[c# sqlcommand]]></category>
		<category><![CDATA[c# sqlconnection]]></category>
		<category><![CDATA[c# sqldatareader]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2344</guid>
		<description><![CDATA[Hayırlı günler, SQL Server ile ilgili ilk dökümanım, bu dökümanda SQL Server ile C# bağlantısı nasıl yapılır ona göstereceğim. Ayırca DataSet gibi hantal bir yapıdan nasıl kurtulucaz onu da göstereceğim inş Üzerinde çalışacağımız SQL Server örnek veritabanını buradan (Veritabanı yedeğidir, SQL Server Management Studio 2008 ile aldığım yedektir.) indiriniz. [projeyi yazının altından indirebilirsiniz.] MakaleUygulama adında [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/sql.gif" alt="sql C# : SQL Server  sql server dot net c sharp " width="237" height="60" title="sql C# : SQL Server  sql server dot net c sharp " />Hayırlı günler,<br />
SQL Server ile ilgili ilk dökümanım, bu dökümanda SQL Server ile C# bağlantısı nasıl yapılır ona göstereceğim. Ayırca DataSet gibi hantal bir yapıdan nasıl kurtulucaz onu da göstereceğim inş <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server  sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server  sql server dot net c sharp " /> </p>
<p>Üzerinde çalışacağımız SQL Server örnek veritabanını <a rel="nofollow" href="http://www.ndemir.com/cikis/http://ndemir.com/.net/SQLServerExample.rar" >buradan</a> (Veritabanı yedeğidir, SQL Server Management Studio 2008 ile aldığım yedektir.) indiriniz.<em> [projeyi yazının altından indirebilirsiniz.]</em></p>
<p>MakaleUygulama adında veritabanına sahip olduğunuzu varsayıyorum;</p>
<p>Amacımız veritabanında Kategoriler tablosunda bulunan tüm kategorileri getirmek olsun.</p>
<p>Form&#8217;un Load olayında bağlantımızı gerçekleştiriyoruz;<br />
<span id="more-2344"></span></p>
<pre class="brush: cpp; title: ; notranslate">
        // bu iki fieldi dışarda tanımlamamız gerekiyor, ileride ikisine ulaşmak zorunda kalabiliriz.
        SqlConnection con;
        SqlCommand cmd;
        private void Form1_Load(object sender, EventArgs e)
        {
            //yerel pc de çalıştığımız için Integrated Security i true yapmamız gerekiyor, eğer uzak pc e bağlansaydık bunun yerine K.adı ve şifre girmek zorunda kalacaktık.
            con = new SqlConnection(&quot;Data Source=localhost;Initial Catalog=MakaleUygulama;Integrated Security=true&quot;);
            cmd = new SqlCommand(&quot;Select KatID,KatAdi from Kategoriler&quot;, con);
        }
</pre>
<p>Sql Server connection stringine göz atalım, Data Source localhost dedik çünkü yerel bilgisayarda çalışıyoruz, Initial Catalog yerine veritabanı adını yazıyoruz. Integrated Security de üst tarafta yazdığım gibidir.</p>
<p>DataSet&#8217;ten kurtulmaktan bahsettim, nasıl kurtulacağımızı görelim şimdi ;</p>
<p>Önce şöyle bir class oluşturalım ; </p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace OrnekUygulama
{
    class KategoriInfo
    {
        int katID;
        public int KatID
        {
            get { return katID; }
            set { katID = value; }
        }

        string katAdi;
        public string KatAdi
        {
            get { return katAdi; }
            set { katAdi = value; }
        }

        public KategoriInfo(int katIDs,string katAdi)
        {
            this.KatAdi = katAdi;
            this.KatID = katID;
        }
    }
}
</pre>
<p>DataSet kullansaydık tüm bilgilerimizi DataSet yapısında kaydedicektik, ama biz o hantal yapıyı değil, kendi oluşturduğumuz bir class da bize gerekli tüm bilgileri saklayacağız. Ufa çaplı projelerde göze çarpmaz ancak büyük çaplı projelerde DataSet performanslı değildir.</p>
<p>Daha sonra Kategorileri Getir butonunu click olayına şu kodları yazalım ;</p>
<pre class="brush: cpp; title: ; notranslate">
        private void btnGetCat_Click(object sender, EventArgs e)
        {
            con.Open();

            List&lt;KategoriInfo&gt; listem = new List&lt;KategoriInfo&gt;();

            SqlDataReader dr=cmd.ExecuteReader();
            while (dr.Read())
            {
                KategoriInfo info = new KategoriInfo(dr.GetInt32(0), dr.GetString(1));
                listem.Add(info);
            }

            listBoxKategori.DataSource = listem;
            listBoxKategori.DisplayMember = &quot;KatAdi&quot;;
            listBoxKategori.ValueMember = &quot;KatID&quot;;
            con.Close();
        }
</pre>
<p>con.Open(); ile bağlantımızı açtık.<br />
<strong>5.Satır</strong>da ise List de KategoriInfo cinsinden değerlerin saklanabileceğini belirttik. (bunun nedenini hemen altta öğrenecekcesiniz)</p>
<p><strong>7. Satır</strong>da DataReader&#8217;e hangi command nesnesini çalıştıracağını belirttik.</p>
<p>Döngü açtık, neden ?<br />
Çünkü DataReader, DataSet gibi tüm bilgileri saklı tutmaz, satır satır çalıştığı için, tek seferde tek satır getirebilir. Kaç kategorimiz var ? 2 o zaman bu döngü 2 defa dönecek, peki nasıl ?<br />
Veritabanından çekilecek bir kayıt varsa Read metodu true değerini döndürür, eğer yoksa false değerini döndürür, yani her seferinde bir kontrol gerçekleşiyor. </p>
<p><strong>10.satırda ne yaptık ?</strong><br />
Burada dr nesnesiyle mevcut satırda (datareader in satır satır çalıştığını söylemiştik) bulunan değerlerini alıp, oluşturduğumuz sınıfın property lerine atıyoruz, constructor da.</p>
<p>dr.GetValue ile de bütün değerleri alabiliyoruz ancak object türünde değer döndürdüğü için casting işlemine tabi tutulması gerekiyor, bu da performans kaybı olacağından biz gelecek verinin türünü belirtip veriyi çekiyoruz.</p>
<p>dr.GetInt32(0); ile gelecek verinin int32 türünde olduğunu belirtiyor ve aldığı 0 parametresi nedir peki ? O da gelecek tabloda 0.kolondaki veriyi belirtiyor. Biz sorgumuzda select KatID,KatAdi from Kategoriler diye oluşturduk. 0.kolon nedir? KatId.<br />
dr.GetString(1); ile gelecek verinin string türünde olduğunu belirttik ve 1. kolondaki veriyi almasını istedik.</p>
<p><strong>11.satır</strong><br />
Biz oluşturduğumuz List ile sadece KategoriInfo türünde değerleri almasını söyledik. Burada da Add metodu ile info nesnemizi List e ekliyoruz. (<a href="http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar" >List Nedir ?</a>)</p>
<p>Döngüden çıktık, verilerimizin hepsi nerede saklandı ? Oluşturduğumuz List olan listem de verilerimizin tümü saklı durumda.<br />
dr nesnemizde ne saklı peki ? Hiçbirşey saklı değil, çünkü dataset gibi çalışmaz sadece, satır satır veri çeker veritabanından.</p>
<p><strong>14.satır</strong><br />
Biz bir datatable i datasource olarak tanımlayabiliyorduk, peki 14.satırda nasıl olurda bir List i datasource olarak tanımlayabiliyoruz ?<br />
Cevabı şurda ; List in üzerine sağ tuşla basıp &#8220;Go to defination&#8221; diyip metadata sına bakalım. IList interface inden türemiş, IList arayüzünden türeyen herşey datasource olarak kullanılabilir.<br />
Yani şöyle diyebiliriz; Biz dataset kullanmayarak, kendi ihtiyaçlarımızı karşılayan bir dataset yazdık. (Tabi ki dataset yazmadık, çünkü bizim oluşturuduğumuz yapı ile dataset karşılaştırılırsa, KategoriInfo sınıfı datatable ile özdeşleştirilebilir, çünkü dataset yapısı datatable ıda içine alan bir yapıdır.)</p>
<p><strong>15 &#038; 16.satırda</strong><br />
DisplayMember olarak &#8220;KatAdi&#8221;, ValueMember olarak &#8220;KatID&#8221; i tanılmadık.<br />
Biz kendi kendi datatable mizi oluşturmuştuk zaten, Burada da oluşturduğumuz List de bulunan; KatAdi property sinin gösterilecek öğe olarak, KatID property sinin ise value(değer) elemanı olarak algılanmasını belirttik.</p>
<p>Programı çalıştırıp Kategoriyi göster butonuna bastığımızda kategorilerimizin geldiğini görüyoruz.</p>
<p>Döküman ağır gelmiş olabilir arkadaşlar, anlamadıysanız 2 defa okumanızı tavsiye ederim. Karmaşık gelebilir ama basit bir yapı. Bol bol pratik yapmanızı öneririm.<br />
<a rel="nofollow" href="http://www.ndemir.com/cikis/http://ndemir.com/.net/SQLServerOrnekUygulama.rar" >C# Sql Server Örnek Proje</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/csharp-sql-server/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

