| Ana Sayfa | Dersler | Download | Forum |Bize Ulaşın  |Siteni Ekle | Ziyaretçi Defteri |


  Getirdiği Avantajlar
  Bağlantısız Katmanda Çalışmak
  Bağlantılı Katmanda Çalışmak
  Strored Procedure'ler İle Çalışmak
  ASP.NET ile DataGrid Kullanımı (C#)
  ASP.Net İle Oracle Üzerinde Çalışmak
  İç İçe Repeater Kullanımı
  TextBox ve DropDownList Data Binding   

ADO.NET de Bağlantısız Katmanda (DataSet, DataTable, DataRow) Çalışmak

Bu makalemizde ADO.NET in bağlantısız katmanında uygulama geliştireceğiz. Bağlantısız katmanda yer alan 3 ana sınıfımız olan; DataSet, DataTable ve DataRow kavramlarını ayrıntılı bir şekilde tanımlayıp uygulamalarınıza referans olacak kodlamalar yapacağız.

Bağlantısız katmanın bize kazandırdığı en önemli şey hızdır. DataSet ile normal veritabanı işlemlerine göre daha hızlı sonuçlar almanız mümkün, çünkü DataSet serverın belleğilde yaratılmışdır, Veritabanı uygulamalarındaki gibi veritabanı dosyasına bir bağlantı gerçekleştirmez.

DataTable sınıfımız ise aslında DataSet sınıfının bir alt üyesi gibi düşünülebilir. Eminimki bir çoğunuz Veritabanlarıyla çalışmıştır. İşte DataSet ve DataTable ilişkiside aynen veritabanı - tablo ilişkisine benzemektedir.

Herkezin bildiği gibi bir tablo satır ve sutunlardan oluşmaktadır. Ado.NET de bağlantısız katmanda bu işler DataRow ve DataColumn Sınıflarıyla yapılmaktadır.

Artık bir DataSet ve DataTable oluşturmanın sırası geldi. Şimdi bağlantısız katmanda bir dataset oluşturup, bunun içinde yeni bir tablo yaratacağız, daha sonra column isimlerini ve girilecek degerleri belirleyeceğiz. Ardından da oluşturduğumuz bu tabloya yeni bir kayıt ekleyeceğiz. Oluşturacağımız düzen aşağıdaki tablolarda sembolize edilmiştir.

DataSet imizin adı ise DenemeSet dir.

UYELER

DataType

UyeID int
Ad varchar
Soyad varchar
Kayittarihi datetime


 

UyeID Ad Soyad Kayıttarihi
0 Emrah Çetiner 12.10.2003
1 Bill Gatez 13.10.2003
2 Ali Veli 14.10.2003
3 Ayşe Fatma 15.10.2003

Sayfanızın en başına System.Data yı import etmeyi unutmayınız.

 
//ds değişkeni ne oluşturduğumuz yeni dataseti atıyoruz
DataSet ds =
new DataSet("DenemeSet");

//dt değişkeninede datatable mızı atıyoruz
DataTable dt = new
DataTable("UYELER");

//yeni bir datacolumn oluşturup, kolonun adını ve alacağı degeri belirliyoruz.
//ardından oluşturduğumuz kolonu tabloya ekliyoruz
DataColumn dc = new DataColumn();
dc.ColumnName = "UyeID";
dc.DataType = Type.GetType("System.Int32");
dt.Columns.Add(dc);

//bu kolon ekleme işleminin bir değişik ve pratik yoluda şöyledir
//Ad kolonu için uygulayacak olursak
dt.Columns.Add("Ad", Type.GetType("System.String"));

//diger kolonlarıda tablomuza ekleyelim
dt.Columns.Add("Soyad", Type.GetType("System.String"));
dt.Columns.Add("Kayittarihi", Type.GetType("System.DateTime"));

//UyeID kolonunu otomatik sayı artımı şeklinde ayarlamak için
DataColumn dcPK = dt.Columns["UyeID"];
//otomatik artış için
dcPK.AutoIncrement = true;
//başlangıç değerini 0 olarak ayarlıyoruz
dcPK.AutoIncrementSeed = 0;
//her kayıtda 1 artmasını istiyoruz
dcPK.AutoIncrementStep = 1;
//aynı kaydın iki kere kullanılmamasını istiyoruz
dcPK.Unique = true;
//alanın boş olmaması gerektiğini söylüyoruz
dcPK.AllowDBNull = false
;

//UyeID kolonunu Primary Key Atama İçin
DataColumn[] Keys = new
DataColumn[1];
Keys[0] = dt.Columns["UyeID"];
dt.PrimaryKey = Keys;

//Şimdi Sıra oluşturduğumuz tabloya kayıt eklemeye geldi
DataRow dr;
//ilk kaydımızı ekleyelim
dr = dt.NewRow();
dr["Ad"] = "Emrah";
dr["Soyad"] = "Çetiner";
dr["Kayittarihi"] = Convert.ToDateTime("12.10.2003");
dt.Rows.Add(dr);
//ikinci kayıt ekleniyor
dr = dt.NewRow();
dr["Ad"] = "Bill";
dr["Soyad"] = "Gatez";
dr["Kayittarihi"] = Convert.ToDateTime("13.10.2003");
dt.Rows.Add(dr);
//üçüncü kayıt
dr = dt.NewRow();
dr["Ad"] = "Ali";
dr["Soyad"] = "Veli";
dr["Kayittarihi"] = Convert.ToDateTime("14.10.2003");
dt.Rows.Add(dr);
//son olarak dördüncü kayıt
dr = dt.NewRow();
dr["Ad"] = "Ayşe";
dr["Soyad"] = "Fatma";
dr["Kayittarihi"] = Convert.ToDateTime("15.10.2003");
dt.Rows.Add(dr);

//oluşturduğumuz ve içersine 4 adet giriş yaptığımız bu tabloyu DataSet e eklemk için ise;
ds.Tables.Add(dt);

 
Sanırım kodları ve kodların arasındaki açıklamalarla kafanızda bir çok şey kesinleşmiştir. Burda tekrar hatırlatmak istediğim bir nokta var. DataSet-DataTable ilişkisi aynen Veritabanı-Tablo ilişkisidir. Ancak siz, örneğin MSSQL de yeni bir veritabanı oluşturmadan yeni bir tablo oluşturamazsınız. Ve bir veritabanının içinde birden çok tablo olabilir. Ancak DataSet-DataTable da tam olarak böyle değil.

Eğer bir çok DataTable ınız varsa bunları DataSet in içinde toplayabilirsiniz. Ancak fark şurdadır ki, yeni bir DataTable yapıp içersine kayıt attıktan sonra bu DataTable ı illa DataSet in içine atmak zorunda değilsiniz. Hız açısından, bence tek bir tablonuz varsa hiç DataSet lerle uğraşmayın sadece DataTable yapmanız yeterli olacaktır. Nerdeyse DataSet in yapabildiği her şeyi DataTable Sınıfıda yapabilmektedir.

Yukarıda yapmış olduğumuz uygulama sonunda bilgisayarınızın belleğinde bir veritabanı oluşturmuş olduk. Ancak oluşturduğumuz bu veritabanınından bir data almış değiliz isterseniz basit bir şekilde DataTable ve DataSet den nasıl veri çekilir onu inceleyelim.

Aşağıdaki Kodları yukarda yazmış olduğunuz kodların altına ekleyiniz ve sayfanıza 4 adet Label Koyunuz.(Label1-Label2-Label3-Label4). Tüm kodlar Page_Load eventinde olmalı.

 
//DataSetimizin içindeki "UYELER" isimli tablonun 0.satırının "Ad" kolonundaki kaydı Label1 e yazdırıyoruz
Label1.Text = ds.Tables["UYELER"].Rows[0]["Ad"].ToString();

//Kolon adınıda sayı ile belirtmemiz mümkün
Label2.Text = ds.Tables["UYELER"].Rows[0][1].ToString();

//Kayıtları Sayı ile gosterirken dikkat etmeniz gereken husus ise
//Kayıtların 0 dan başlamasıdır
//Bir çok yeni arkadaşımız kayıtların 1'den başladığını düşünmekte ve hata yapmaktadırlar
//Lütfen bu konuda dikkatli olunuz.

//.ToString() ifadesi ise alınan kaydı string tipine değiştirir.
//Bunu yapmak zorundasınız çünkü Label string veritipi içindir

//DataSet'den değil de DataTable dan direk olarak kayıt gösterebilirdik
//Daha hızlı ve daha az kod kullanmak isteyenler için kesinlikle bu yöntemi tavsiye ederim.
Label3.Text = dt.Rows[0]["Ad"].ToString();
//veya
Label4.Text = dt.Rows[0][1].ToString();

 
Sanırım yukarıdaki kodlarla az önce bahsetmiş oldğum DataTable - DataSet ilişkisi daha da yerleşmiştir.

DataSet imizin veya DataTable mızın içindeki verileri gössterme konusunda basit bir örnek verdik. İlerki makalelerimizde DataSet lerle daha komplike çalışmalar yapacağız. Öncelikle kavramların kafanızda tam olarak oturması önemlidir.


Sorularınız için bana ulaşabilirsiniz...

Herkeze çalışmalarında başarılar dilerim.


turkmcsd .NET WindRacer = (C#)Özcan İLHAN;
WindRacer.Email = "turkmcsd@hotmail.com";

 

| Ana Sayfa | Dersler | Download | Forum |Bize Ulaşın  |Siteni Ekle | Ziyaretçi Defteri |

Türk MCSD.NET © 2005
 Siteyi en kaliteli Internet Explorer 5 ve üzeri versiyonlarinda 800 x 600 pixel çözünürlükte izlemenizi tavsiye ederiz.