2018年7月4日 星期三

[C#] DataSet、DataTable、DataRow、DataColumn 之基本關係

DataRow:資料列物件,含有多個資料值

DataColumn:資料表欄位物件。

DataTable:資料表物件,含有多個DataRow、DataColumn物件。

DataSet:資料集物件,含有多個DataTable。

public static void Main(string[] args)
{
   DataTable dt = new DataTable();
   dt.TableName = "Student";

   //定義DataTable欄位
   dt.Columns.Add("SN", typeof(int));
   dt.Columns.Add("Name", typeof(string));
   dt.Columns.Add("Sex", typeof(bool));
   DataColumn dc = new DataColumn("Birthday", typeof(DateTime));
   dt.Columns.Add(dc);

   //以Add方法新增欄位資料
   dt.Rows.Add(1, "John", true, new DateTime(1998, 8, 13));

   //以NewRow方法新增相同結構描述之資料列
   //以索引新增欄位資料
   DataRow dr2 = dt.NewRow();
   dr2[0] = 2;
   dr2[1] = "Mary";
   dr2[2] = false;
   dr2[3] = new DateTime(1995, 6, 12);
   dt.Rows.Add(dr2);

   DataRow dr3 = dt.NewRow();
   //以欄位名稱新增欄位資料
   dr3["SN"] = 3;
   dr3["Name"] = "Tom";
   dr3["Sex"] = true;
   dr3["Birthday"] = new DateTime(1997, 3, 6);
   dt.Rows.Add(dr3);

   //將DataTable加入DataSet中
   DataSet ds = new DataSet();
   ds.DataSetName = "MySet";
   ds.Tables.Add(dt);

   //以索引讀取特定欄位名稱
   Console.WriteLine(dt.Columns[2].ColumnName);

   //讀取DataTable的全部欄位名稱
   foreach (DataColumn item in dt.Columns)
   {
      Console.WriteLine(item.ColumnName);
   }

   //以索引、欄位名稱讀取特定欄位資料
   Console.WriteLine(dt.Rows[1]["Name"] + " - " + dt.Rows[1]["Sex"] + " - " + Convert.ToDateTime(dt.Rows[1]["Birthday"]).ToString("yyyy/MM/dd"));

   //讀取DataTable的全部欄位資料
   foreach (DataRow item in dt.Rows)
   {
      Console.WriteLine(item[0] + " - " + item[1] + " - " + item[2] + " - " + item[3]);
   }
}

沒有留言:

張貼留言