DataSet Kavrami – III

Bu makalemizde DataSet sinifina ait bazi methodlarin  islevlerine ve özelliklerine deyinecegiz. Bizim için yararli olabilecek bir çok method Datasetlerimizin içerisinde yer almaktadir. Bu methodlar programlama anlayisini kolaylastirmakta ve hizlandirmaktadirlar.

 .

AcceptChange Methodu 

      DataSet sinifimizda oldugu gibi hem DataTable hemde DataRow Sinifimizda bu methoda sahiptir. Bu methodun DataTable sinifi ile çagrilmasi bütün DataRowlarda da çagrilmasina sepeb olacaktir. Benzer sekilde DataSet sinifimizdan çagirirsak tüm DataTablelar ve dolayisiyla tüm DataRowlar hiyerasik bir yapiyla etkilenecektir. Bu durumda multiple level akisi gerçeklesmis olur.  Asagida küçük bir örnegimiz bulunmaktadir. Bir önceki makalemizde iller tablosunu SqlDataApater sinifimizi kullanarak  dataSetimize doldurmus ve DataSetimizin içerisinde "Iller" adli bir DataTable olusturmustuk. Elimizde bir adet dataSet ve ona bagli "Iller" dataTable oldugunu varsayarak örnegimizi olusturmaya basiyoruz.

 

    private void AcceptChangesNedir()  {

    // Iller tablomuza yeni bir satir ekliyoruz.

    DataRow myRow;

    myRow = dataSet.Tables["Iller"].NewRow();

    myRow["Pk_Il_ID"] = 1;

    myRow["Il_Ad"] = "Denizli";

      

    // yeni bir satir ekleniyor.

    dataSet.Tables["Iller"].Rows.Add(myRow);

 

    // AcceptChange methodu dataSet ten çagrildiginda

    // Iller DataTablendaki tüm DataRow lari etkileyecektir.

    dataSet.AcceptChanges();

    }

 

        Yukaridaki örnekte AcceptChanges() Methodu dataSetten tetiklenmis ve tüm table ve ona bagli rowlar etkilenmistir. Tam anlamiyla DataRowlarin RowState durumlari AcceptChanges() ile; satirin eklenmesi ya da degistirilmesi durumunda (added or modified ) degismemis(unchange) durumuna, silinmesi durumunda ise ayrilmis(detached) pozisyonuna geçmesine neden olacaktir.

 

           

    private void RowStateNedir()

    {

.

    DataTable table = dataSet.Tables["Iller"];

    DataRow row;

 

 

    row = table.NewRow();

    // Detached row. Ayrilmis Satir

    Response.Write("New Row " + row.RowState);

 

    table.Rows.Add(row);

    // Added row. Eklenmis satir

    Response.Write("AddRow " + row.RowState);

 

    table.AcceptChanges();

    // Unchanged row. Degismemis satir

    Response.Write("AcceptChanges " + row.RowState);

 

    row["Il_Ad"] = "Konya";

    // Modified row. Degistirilmis satir

    Response.Write("Modified " + row.RowState);

 

    row.Delete();

    // Deleted row. Silinmis Satir

  

    Response.Write("Deleted " + row.RowState);

       table.AcceptChanges();

    // Detached row. Ayrilmis Satir

    Response.Write("AcceptChanges " + row.RowState);

    }

 .

Clear Methodu

      Clear Methodu sayesinde kolayca tüm tabellarimizin satirlarini ayni anda temizleyebiliriz.

    private void Clear_Nedir(DataSet dataSet)

    {

        // dataSetimize bagli tüm Tablelarda satir sayisini tespit edelim

        foreach (DataTable table in dataSet.Tables)

        {

            Response.Write(table.TableName + "Rows.Count = "

                + table.Rows.Count.ToString());

        }

        // Tüm tablellarin satirlarini temizleyelim

        dataSet.Clear();

 

        // Tekrar gözlemleyelim

        foreach (DataTable table in dataSet.Tables)

        {

            Response.Write(table.TableName + "Satir Sayisi = "

                + table.Rows.Count.ToString());

        }

    }

 

Clone Methodu

            Clone Methodu ile tabellarimizin yapilarini aralarindaki iliskileri baska bir datasete uyarlayabiliriz. Fakat herhangi bir veri kopyalama söz konusu degildir.

 

          DataSet cloneSet = dataSet.Clone();

 

Copy Methodu

            Clone Methodu ile tabellarimizin yapilarini aralarindaki iliskileri baska bir datasete verileri ile kopyalamamizi saglar.

 

          DataSet copySet = dataSet.Copy();

 

Merge Methodu

Merge methodu iki tablonun birlestirilmesi esasina dayanir. Iki tablonun birlestirilebilmesi için birtakim ön sartlarin olmasi gereklidir.

 

Bir datagridde iki tablonunu gösterilebilmesi için,

·         Datatable’içindeki tüm column tipleri ve adlari ayni olamlidir.

·         DataTable isimleri ayni olmalidir.

 

Merge Methodunun temel uygulama alanlari Master ve transation tablolarinin yapilandirilmasina yöneliktir.

 

Table1: Iller                                   Table2: Iller

Alan1 int32    Pk_Il_ID                    Alan1 int 32   Pk_Il_ID

Alan2 string   Il_Ad                        Alan2 string   Il_Ad

 

 

    private void MergeNedir()

    {

 

        DataSet dataSet1 = new DataSet();

        DataSet dataSet2 = new DataSet();

 

        // dataSet1 mizin içersine Iller tablosunun fill edildigini düsünelim    

        // dataSet2 mizin içersine de yeni eklenen iller oldugu varsayalim

       

        dataSet1.Merge(dataSet2);

 

        GridView1.DataSource = dataSet1.Tables[0];

        GridView1.DataBind();

 

   }

2 thoughts on “DataSet Kavrami – III

  1. Verdiginiz bilgilerden dolayi tesekkür ederim.

    Yalniz benim kafama söyle bir sorun takiliyor.. Dataset ile ilgili..  Dataset e  AcceptChanges() yaparsak satiri UnChange olarak isaretleyecek ve biz bu dataset i Adaptor araciligi asil veri tabanina Adaptor.Update metodu ile gödermeye çalisirsak birsey göndermez.. Çünkü satirlarda degisiklik yapilmamis olarak algilayacak..

    Diyeceksiniz ki e o zaman AcceptChanges() yapma o zaman. O da olmuyor malesef. Suan üzerinde ugrastigim programda bununla ilgi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir