DataTable用法總結歸納

DataTable 用法歸納
2007-07-25 10:02
DataTable 用法歸納

一。創建一個內存表,下面的代碼會用到它
DataTable      auto = new DataTable();

auto.Columns.Add("ID");

auto.Columns.Add("Name");

for(int i=1;i<=10;i++)

{

         auto.Rows.Add(new object[]{i,"baibaoqing"});

}

二。下面介紹DataTable對象經常使用的方法

          1. DataTable 的複製和克隆

           創建DataTable的完全副本(full copu 複製表的結構和數據),通過DataTable的Copy方法實現

           DataTable copy_Table=auto.Copy()

           for(int i=0;i<copy_Table.Rows.Length;i++)

           {

                  Response.Write("<script>alert("+copy_Table.Rows[i][0]+");</script>");

           }

輸出的結果爲從0到10 的數字

          有時需要複製DataTable 的表模式(表結果)而不復制數據,可以使用DataTable的Clone方法

           DataTable clone_Table=auto.Clone();

          在克隆了一個DataTable後,可能需要DataTable對象中的某些DataRow對象(行數據)複製到克隆的DataTabel 中,可以使用DataTable 的ImPortRow方法

          clone_Table.ImportRow(auto.Rows[0]);

         2.枚舉DataTable

         通過Foreach循環遍歷DataTable的行和列

         System.Text.StringBuilder      buffer=new System.Text.StringBuiler();

         foreach(DataColumn dc in auto.Colmns)

        {

                 buffer.Append(String.Format(“{0,15}”,dc.ColumnName));

        }

         buffer.Append("/r/t");

        foreach(DataRow dr in auto.Rows)

        {

                foreach(DataColumn dc in auto.Colmns)

               {

                buffer.Append(String.Format("{0,15}",dr[dc]));  
               }

               buffer.Append("/r/t");

}

textbox1.Text=buffer.ToString();

三. 使用DataView

          1. Sort排序

             DataView view=new DataView(auto);

             view.Sort="Make ASC,Year DESC";

             不過我很少使用DataView 的排序功能,我的作法是在SQL語句中使用Order by

           2. 使用RowFilter 精確查找

               DataView view=new DataView(auto);

               view.RowFilter="Make like 'AA%' and Year>2001";

              同樣也可以在SQL語句中設置查詢條件,看個人的習慣和實際的需要了。

            3 將DataView 導出到一個新表

             DataTable new_Table=view.ToTable("MyTable",true,"id","name");

             MyTable 新表的名稱,true 表示顯示不同的值,將相同的行刪除(相當於Sql 的distinct),

           id 和name 爲新表的列ID.

           4. 枚舉DataView

            和枚舉DataTabe大同小異

              System.Text.StringBuilder      buffer=new System.Text.StringBuiler();

         foreach(DataColumn dc in auto.Colmns)

        {

                 buffer.Append(String.Format(“{0,15}”,dc.ColumnName));

        }

         buffer.Append("/r/t");

        foreach(DataRowView dv in view)

        {

                foreach(DataColumn dc in auto.Colmns)

               {

                buffer.Append(String.Format("{0,15}",dv[dc]));  
               }

               buffer.Append("/r/t");

}

textbox1.Text=buffer.ToString();

另外在.net 2.0中DataTable對象可以處理XML文件,和DataSet一樣,DataTable對象也有ReadXml和WriteXml 的方法,沒有具體用過,有機會使用時再做總結。

------------------------------------------------------------------------------------------------------------------------------------------

通過DataTable獲得表的主鍵

很多情形下我們需要知道表的主鍵是什麼。在ADO.Net中提供了DataTable可以映射數據庫的表。於是便可以利用DataTable的屬性PrimaryKey,它是DataColumn[] 類型是一個數組。我們可以使用如下的代碼

      DataColumn[] cols;
      cols = Table.PrimaryKey;
 //注意不是cols是DataColumn數組,不是DataColumn變量。這樣做主要是爲了處理聯合主鍵的問題。
      for(int i = 0; i < cols.Length; i++)
      {
             MessageBox.Show(cols[i].ColumnName);
      }

 

按理這個問題就已經解決了,但是cols.Length卻是0。原來在默認的情況下填充DataTable時並沒有從數據庫中取的主鍵的信息。如何獲得主鍵呢?經過研究發現在填充Dataset的時候可以使用DataAdapter的MissingSchemaAction屬性幫助我們解決這個問題,於是有如下的代碼:

       //使用DataAdapter填充DataTable

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章