DataTable總結(C#)

新建新表並賦值

新建新表

DataTable dt = new DataTable();   //創建一個空表
DataTable dt = new DataTable("doctor");   //創建一個名爲"doctor"的空表

賦值

爲空表添加三列

dtNew.Columns.Add("A", Type.GetType("System.String"));  //添加第一列,列名爲A
dtNew.Columns.Add("B", Type.GetType("System.String"));  //添加第二列,列名爲B
dtNew.Columns.Add("C", Type.GetType("System.String"));  //添加第三列,列名爲C

爲創建好的空表動態添加行,每行都有三列

int n = 3;
for (int i = 0; i < n; i++)
{
    DataRow dr = dt.NewRow();        //新建行
    dr[0] = (i + 0).ToString();      //第一列賦值
    dr[1] = (i + 1).ToString();      //第二列賦值
    dr[2] = (i + 2).ToString();      //第三列賦值
    dt.Rows.Add(dr);                 //向表中添加行
}

通過名稱賦值

DataRow dr = dt.NewRow();  //新建行
dr[0] = "張三";            //通過索引賦值
dr["A"] = "張三"           //通過名稱賦值

dt.Rows[0][0] = "張三";     //通過索引賦值
dt.Rows[0]["A"] = "張三";   //通過名稱賦值

MySqlDataReader轉換DataTable

下面是我的代碼示例

DataTable dt_doctor = new DataTable();     //新建空表
string sql = "select * from doctor;";      //查詢語句
MySqlDataReader reader = Goal_Mysql_var.mysql.exec_mysql_command_execute_Reader(sql); //這是我代碼裏自己寫的
dt_doctor.Load(reader);                    //將MySqlDataReader轉換爲DataTable
reader.Close();                            //關閉reader

插入一行數據

DataTable dtNewr = new DataTable();
dtNew.ImportRow(dt.Rows[0]);//這是加入dt中的第一行數據

刪除

使用DataTable.Rows.Remove(DataRow)方法

dt.Rows.Remove(dt.Rows[0]);   //使用DataTable.Rows.Remove(DataRow)方法,刪除第0行
dt.AcceptChanges();

使用DataTable.Rows.RemoveAt(index)方法

dt.Rows.RemoveAt(0);    //使用DataTable.Rows.RemoveAt(index)方法,刪除第0行
dt.AcceptChanges();

使用DataRow.Delete()方法

dt.Row[0].Delete();     //使用DataRow.Delete()方法,刪除地0行
dt.AcceptChanges();

區別和聯繫

  • Remove()和RemoveAt()方法是直接刪除
  • Delete()方法只是將該行標記爲deleted,但是還存在,還可DataTable.RejectChanges()回滾,使該行取消刪除。
  • 用Rows.Count來獲取行數時,還是刪除之前的行數,需要使用DataTable.AcceptChanges()方法來提交修改。
  • 如果要刪除DataTable中的多行,應該採用倒序循環DataTable.Rows,而且不能用foreach進行循環刪除,因爲正序刪除時索引會發生變化,程式發生異常,很難預料後果。

取值

string name = dt.Rows[0][0].ToString();      //通過索引取值
string name1 = dt.Rows[0]["A"].ToString();   //通過列名取值

複製

複製表,同時複製了表結構和表中的數據

DataTable dtNew = new DataTable();
dtNew = dt.Copy();  
dtNew.Clear()  //清空數據

克隆表,只是複製了表結構,不包括數據

DataTable dtNew = new DataTable();
dtNew = dt.Clone();

排序

DataView dv = dt.DefaultView;   //獲取表視圖
dv.Sort = "ID DESC";            //按照ID倒序排序
dv.ToTable();                   //轉爲表

篩選行

DataRow[] drs = dt.Select("A is null");  //選擇A列值爲空的行的集合
DataRow[] drs = dt.Select("A = '李四'");  //選擇A列值爲"李四"的行的集合
DataRow[] drs = dt.Select("A like '張%'");//篩選A列值中有"張"的行的集合(模糊查詢),如果的多條件篩選,可以加 and 或 or
DataRow[] drs = dt.Select("A like '張%'", "B DESC"); //篩選A列值中有"張"的行的集合並按B降序排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章