Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  DataSet, DataTable, DataRow classlarından türetilmiş, veri tipleri object yerine integer, string olabilen classların oluşturduğu modele typed dataset deniyor.

Normalde DataSet ilişkisel veritabanı yapısını modeller. Bu çok genel modelleme yaklaşımı içinde, DataSet aracılığıyla veritabanındaki bir kayıta ait değerleri okumak istediğinizde değerler size object tipinde sunulur, bunları temel veritiplerine dönüştürme (cast) işlemini kendiniz yapmak zorunda kalırsınız.

Örneğin aşağıdaki kodda bu işlem yapılmaktadır;

public class DenemeApp
{

void void TabloSorgula(DataSet dataset, string tableName)
{
    SqlConnection conn = new SqlConnection("bağlantı bilgileri..");
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, "select * from " + tableName);
    adapter.Fill(dataset, tableName);
}
public static void Main()
{
    DenemeApp app = new DenemeApp();

    DataSet ds = new DataSet();
    // Kisi tablosundaki tüm kayıtları veritabanından DataSet'e aktaralım
    app.TabloSorgula(ds, "Kisi");

    // şimdi ilk kaydı okuyalım
    DataRow ilkKayit = ds.Tables["Kisi"].Rows[0];
    string    ad = (string)   ilkKayit["Ad"];
    int      yas = (int)      ilkKayit["Yas"];
    DateTime trh = (DateTime) ilkKayit["DogumTarihi"];

}

}

Yukarıdaki kodun son kısmında sürekli casting işlemi yapıldığı görülmektedir. Çünkü normal DataSet kullandık. Eğer typed dataset kullansaydık bu son ksım şöyle olacaktı:

    // şimdi ilk kaydı okuyalım
    KisiRow ilkKayit = ds.Tables.Kisi;
    string    ad = ilkKayit.Ad;
    int      yas = ilkKayit.Yas;
    DateTime trh = ilkKayit.DogumTarihi;

Görüldüğü gibi casting yapmak yok, alan isimlerini string olarak belirtmek yok. Çok daha sofistike bir şekilde veritabanı datamıza ulaşabiliyoruz.

Typed DataSet nasıl kullanılır?
Kendi DataSet, DataTable, DataRow classlarınızı (yukarıdaki örnekte KisiRow'da olduğu gibi) yazar, bunları temel DataSet, DataTable, DataRow'dan türetirsiniz. Aşağıdaki gibi :

public class KisiRow : DataRow {
   
    public string Ad {
        get {
            return (string) this["Ad"];
        }
        set {
            this["Ad"] = value;
        }
    }
   
    public int Yas {
        get {
            return (int) this["Yas"];
        }
        set {
            this["Yas"] = value;
        }
    }
   
    public DateTime DogumTarihi {
        get {
            return (DateTime) this["DogumTarihi"];
        }
        set {
            this["DogumTarihi"] = value;
        }
    }
}

Peki sırf typed DataSet aşkına veritabanınzdaki her tablo için bu kadar kod yazmaya değer mi? Eğer kodu kendi parmak gücümüzle yazıyorsak değmez. Ama bu kodu üreten bir tool kullanıyorsak değer.

Bu toollardan birine Visual Studio menülerinden erişebiliyoruz. Visual Studio.Net'te typed DataSet oluşturmak için aşağıdaki adımları izleyebiliriz:

1. "Project > Add New Item" menüsünü kullanarak projenize yeni bir XML Schema dökümanı ekliyoruz. Bu dosyanın adını veritabanımızın adıyla aynı yapıyoruz.
2. Designer'ı kullanarak Kisi tablosunu schema'mızda tasarlıyoruz.
3. Son olarak "Schema > Generate DataSet" menüsünü seçerek typed dataset kodumuzu elde ediyoruz.

Not: Solution explorer'da formlara ait .resx dosyalarının form kodlarının arkasına saklandığı gibi, az önce ürettiğimiz kod da XML Schema dosyasının arkasına saklanmıştır. Görmek için Solution explorer'da Show all Files'ı seçin.
fizikci
26 Mayıs 2005 09:01 ~ 19 Haziran 2005 17:19
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.
© 2005, Bilişim Kulübü. (1125 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen