Dataset

Visual Basic bölümünde yer alan bu konu SüKuN tarafından paylaşıldı.

  1. SüKuN

    SüKuN Harbi Aktif Üye

    VİSUAL BASİC.NET

    DataSet Nedir?
    DataSet nesnesi herhangi bir veri kaynağı ile ilişkilendirilmiş veri kümesini temsil eder. Bu veri kaynağı bir veritabanı olacağı gibi XML formatlı bir kaynakta olabilir. Nitekim DataSet nesnesinde tutulan veriler hafızada XML formatında tutulmaktadır. DataSet içindeki veriler aynen veri tabanında olduğu gibi tablolar şeklinde saklanır. Yani bir DataSet nesnesi bir yada birden fazla tablo barındırabilir. DataSet'in yapısındaki tablolar DataTable isimli sınıfla temsil edilir. Bu da DataSet'in DataTable türünden nesneleri olan bir kolekesiyona sahip olduğunu gösterir. Bu koleksiyonun adı Tables' dır. Tables koleksiyonun Add() ve Remove() metotları kullanılarak DataSet'e yeni tablo eklenip çıkarılabilir. Tables koleksiyonundaki tablolara indeksleyici yardımıyla erişilebilir. İndeksleyincinin parametresi tablonun ismi olabileceği gibi tablonun DataSet'teki sıra numarası da olabilir.6

    Her bir DataTable nesnesinin Rows ve Columns koleksiyonu bulunmaktadır. Rows koleksiyonu DataTable'daki kayıtların kümesidir. Bu kümedeki her bir kayıt ise DataRow isimli sınıfla temsil edilir. Bir kayıttaki veriler sütunlara ayrılmıştır. Bir kayıt birden fazla sütundan oluşmuştur. Dolayısıyla her bir kaydın ilgili sütununa erişmek için DataRow sınıfındaki indeksleyici kullanılır. DataTable'da olduğu gibi indeksleyicinin parametresi sütunun adı yada sıra numarası olabilir.
    DataSet nesnesinde veri ile direkt ilişkili olan bu nesnelerin yanı sıra ilişkisel veri tabanı modelinin gerektirdiği yapıları barındırmak içinde çeşitli sınıflar vardır. Bu sınıflardan en önemlisi DataRelation ve Constraint sınıfıdır. İki tür Constraint(kısıt) sınıfı vardır. Bunlar UniqueConstraint ve ForeignKeyConstraint sınıflarıdır. Constraint sınıfları temel olarak verinin tablolara yerleştirilme kurallarını belirler. Örneğin UniqueConstraint tablodaki bir kaydın tekil olmasını sağlarken, ForeignKeyConstraint sınıfı birbirleriyle ilişkili tablolardan birinde meydana gelen değişikliğin diğerinde nasıl bir etki yaratacağını belirler. DataTable nesnelerinin Constraints isimli koleksiyonuna oluşturulan bu Constraint nesneleri aktarılarak kısıtların çalıştırılması sağlanır. Dikkat edilmesi gereken nokta kısıtların çalışması için DataSet'in EnforceConstraints özelliğinin true olması gerektiğidir. Diğer bir önemli sınıf ise DataRelation sınıfıdır. Bu yazıda DataRelation detaylı bir şekilde anlatılacaktır. Bundan sonraki yazımda ise Constraint sınıfları üzerinde duracağım.6

    Yukarıda bahsi geçen bütün sınıflar verinin hafızada modellenmesi için gerekli olan sınıflardır. Tüm bunlar için verinin DataSet içine doldurulması gereklidir. DataAdapter bir DataSet'in yada DataTable' ın içini doldurmak için veri kaynağı ile bağlantı kurar. Bu işlemi yapan DataAdapter sınıfının Fill() metodudur. Bu metot parametre olarak bir DataSet nesnesi alabileceği gibi DataTable nesnesi de olabilir. Eğer paramatre bir DataSet nesnesi ise DataSet nesnesi içinde yeni bir DataTable nesnesi oluşturulur ve veriler bu nesneye aktarılır. Veri kaynağına DataAdapter ile erişirken dikkat etmemiz gereken önemli bir nokta var : Her DataAdapter nesnesi ile ancak bir DataTable nesnesi oluşturulabilir. Dolayısıyla birden fazla tablo içeren DataSet nesneleri ile çalışmak için birden fazla DataAdapter nesnesi oluşturmalıyız. DataSet içinde yapılan değşikliklerin orjinal veri kaynağında güncellenmesi içinde DataAdapter kullanılır. DataAdapter'in güncellenen verileri düzgün bir biçimde ele alabilmesi için UpdateCommand, InsertCommand ve DeleteCommand gibi özelliklerinin belirtilmesi gerekir. Command nesneleri bir SQL dizgesi ve Connection nesnesi ile kurulur.