System.Collection NameSpace’i içerisindeki Collection Classının bazıları;
ArrayList
BirArray
CollectionBase
DictionaryBase
Hashtable
Queue dir.
Biz bu makalemizde CollectionBase sınıfına değineceğiz.
İlk olarak bir C# Windows application projesi açalım.
Projemizde anlaşılması kolay olsun diye SQL Server 2000 da Northwind içerisindeki Kategoriler tablosunu kullanacağız.
İlk olarak projemize bir adet Class ekliyoruz. Clasın adını Kategori olarak belirliyoruz. Buradaki amacımız kategori sınıfına ait bir kategori nesnesi oluşturmaktır. Çünkü Collectionlar nesnelerden türerler.
Classımızı ekledikten sonra veritabanımıza bir göz atalım. Veritabanımızda var olan alanlar, CategoryID, CategoryName ve Description alanlarıdır.
Artık Kategori Classımızı yazabiliriz
Kategori.cs
using System;
namespace Collection
{
public class Kategori
{
private int 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 classı içerisinde Kategoriler tablosuna ait bir kategori nesnesi oluşturduk.
Şimdi bu nesneye ait bir Collection oluşturabiliriz. Projemize bir adet daha class ekleyelim ve adını KategoriCollection.cs verelim.
using System;
using System.Collections;
namespace Collection
{
public class KategoriCollection:CollectionBase //Collection Classları CollectionBase sınıfından 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 oluşturuyoruz. Dışarıdan 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 oluştururuz. */
public void Remove(Kategori kategori)
{
this.List.Remove(kategori);
}
/*Kategori türünde this adında özel bir property oluştururuz*/
public Kategori this[int index]
{
get {return (Kategori)this.List[index];}
set{this.List[index]=value;}
}
}
}
|
Kategori Nesnemizi ve Kategori Collectionumuzu oluşturduğumuza göre artık bu collectionu kullanabiliriz. Projemize bir adet daha class ekleyelim ve adını KategoriProvider.cs olarak verelim.
using System;
namespace Collection
{
public class KategoriProvider
{
/* Static bir Connection oluşturulur */
private static System.Data.SqlClient.SqlConnection Cnn=new System.Data.SqlClient.SqlConnection(Genel.ConnectionString);
public KategoriProvider(){}
/* Verileri çekmek için GetAllKategori adında bir function oluştururuz. 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 şimdi her şey hazır. Artık collectionumuzu form üzerinde kullanabiliriz. Bunun için formumuza bir adet Datagrid ekleyelim.
Gridimizi ekledikten sonra form yüklenirken verileri göstermek için Form_Load eventi içerisine aşağıda kodları yazarsak projemizi tamamlamış olacağız.
private KategoriCollection Kc=new KategoriCollection();//Collectionumuzun instance ni oluşturduk
private void Form1_Load(object sender, System.EventArgs e)
{
Kc=KategoriProvider.GetAllKategori();
dataGrid1.DataSource=Kc;
}
|
Evet projemizi tamamladığımıza göre artık projeyi çalıştırabiliriz.
İşte sonuç
Evet arkadaşlar makalemizin sonuna geldik bir sonraki makalemizde görüşmek üzere.