Jump to content

C# - Collections


wmismail

Recommended Posts

Merhaba arkadaşlar;

Bu makalemizde System.Collections Namespacenden ve Bu Namespace içerisindeki CollectionBase sinifindan kisaca bahsedecegiz.

Collectionlar bize Datasetlerden bagimsiz çalismamizi saglar ve buda bize çok büyük performans kazanci saglar. Collection lar arraylere benzer ve Classlar içerisine nesneleri yerlestirmemizi saglar.

System.Collection NameSpace’i içerisindeki Collection Classinin bazilari;

ArrayList

BirArray

CollectionBase

DictionaryBase

Hashtable

Queue dir.

Biz bu makalemizde CollectionBase sinifina deginecegiz.

Ilk olarak bir C# Windows application projesi açalim.

1000000599_image001.jpg

Projemizde anlasilmasi kolay olsun diye SQL Server 2000 da Northwind içerisindeki Kategoriler tablosunu kullanacagiz.

Ilk olarak projemize bir adet Class ekliyoruz. Clasin adini Kategori olarak belirliyoruz. Buradaki amacimiz kategori sinifina ait bir kategori nesnesi olusturmaktir. Çünkü Collectionlar nesnelerden türerler.

1000000599_image002.jpg

Classimizi ekledikten sonra veritabanımiza bir göz atalim. veritabanımizda var olan alanlar, CategoryID, CategoryName ve Description alanlaridir.

Artik Kategori Classimizi yazabiliriz

Kategori.cs

using System;

namespace Collection

{

public class Kategori

{

private string tKategoriNo;

private string tKategoriAdi;

private string tKategoriAciklama;

public Kategori(){}

public Kategori(string kategoriadi, string kategoriAciklama)

{

this.tKategoriAdi=kategoriadi;

this.tKategoriAciklama=kategoriAciklama;

}

public int KategoriNo

{

get

{

return tKategoriNo;

}

set

{

tKategoriNo=value;

}

}

public Kategori(){}

public string KategoriAciklama

{

get

{

return tKategoriAciklama;

}

set

{

tKategoriAciklama=value;

}

}

public string KategoriAdi

{

get

{

return tKategoriAdi;

}

set

{

tKategoriAdi=value;

}

}

}

}

Kategori classi içerisinde Kategoriler tablosuna ait bir kategori nesnesi olusturduk.

Simdi bu nesneye ait bir Collection olusturabiliriz. Projemize bir adet daha class ekleyelim ve adini KategoriCollection.cs verelim.

using System;

using System.Collections;

namespace Collection

{

public class KategoriCollection:CollectionBase //Collection Classlari CollectionBase sinifindan türer ve Collection base System.Collections namespace i içerisinde yer alır.

{

public KategoriCollection(){}

/*Burada Collecsiyonunuza bir eleman eklemek için Add Fonksiyonu olusturuyoruz. Disaridan Kategori türünde bir kategori nesnesi alır.*/

public int Add(Kategori kategori)

{

return this.List.Add(kategori);

}

public int Add(string KategoriAdi, string KategoriAciklama)

{

Kategori Kategori =new Kategori(KategoriAdi,KategoriAciklama);

return this.List.Add(Kategori);

}

public int Add(int kategorino, string KategoriAdi, string KategoriAciklama)

{

Kategori Kategori =new Kategori(kategorino,KategoriAdi,KategoriAciklama);

return this.List.Add(Kategori);

}

/* Collectionumuzdan bir eleman silmek için bir void olustururuz. */

public void Remove(Kategori kategori)

{

this.List.Remove(kategori);

}

/*Kategori türünde this adinda özel bir property olustururuz*/

public Kategori this[int index]

{

get {return (Kategori)this.List[index];}

set{this.List[index]=value;}

}

}

}

Kategori Nesnemizi ve Kategori Collectionumuzu olusturdugumuza göre artik bu collectionu kullanabiliriz. Projemize bir adet daha class ekleyelim ve adini KategoriProvider.cs olarak verelim.

using System;

namespace Collection

{

public class KategoriProvider

{

/* Static bir Connection olusturulur */

private static System.Data.SqlClient.SqlConnection Cnn=new System.Data.SqlClient.SqlConnection(Genel.ConnectionString);

public KategoriProvider(){}

/* Verileri çekmek için GetAllKategori adinda bir function olustururuz. Function KategoriCollection türndedir.

*/

public static KategoriCollection GetAllKategori()

{

KategoriCollection kc=new KategoriCollection();

System.Data.SqlClient.SqlCommand Cmd=new System.Data.SqlClient.SqlCommand

("Select * from Categories",Cnn);

System.Data.SqlClient.SqlDataReader Dr;

Cnn.Open();

Dr=Cmd.ExecuteReader();

while (Dr.Read())

{

kc.Add(

(int)Dr["CategoryID"],

(string)Dr["CategoryName"],

(string)Dr["Description"]

);

}

Dr.Close();

Cnn.Close();

return kc;

}

}

}

Evet simdi her sey hazir. Artik collectionumuzu form üzerinde kullanabiliriz. Bunun için formumuza bir adet Datagrid ekleyelim.

1000000599_image003.jpg

Gridimizi ekledikten sonra form yüklenirken verileri göstermek için Form_Load eventi içerisine asagida kodlari yazarsak projemizi tamamlamis olacagiz.

private KategoriCollection Kc=new KategoriCollection();//Collectionumuzun instance ni olusturduk

private void Form1_Load(object sender, System.EventArgs e)

{

Kc=KategoriProvider.GetAllKategori();

dataGrid1.DataSource=Kc;

}

Evet projemizi tamamladigimiza göre artik projeyi çalistirabiliriz.

işte sonuç J

1000000599_image004.jpg

Evet arkadaşlar makalemizin sonuna geldik bir sonraki makalemizde görüşmek üzere.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...